diff --git a/oeis2.cabal b/oeis2.cabal
--- a/oeis2.cabal
+++ b/oeis2.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.36.0.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           oeis2
-version:        1.0.9
+version:        1.0.10
 synopsis:       Interface for Online Encyclopedia of Integer Sequences (OEIS).
 description:    Release notes are here https://github.com/23prime/oeis2/releases
 category:       Math
@@ -19,6 +19,7 @@
 build-type:     Simple
 extra-source-files:
     README.md
+    test/fixtures/A000027.json
 
 source-repository head
   type: git
@@ -27,6 +28,7 @@
 library
   exposed-modules:
       Math.OEIS
+      Math.OEIS.Http
       Math.OEIS.Internal
       Math.OEIS.Types
   other-modules:
@@ -36,7 +38,7 @@
   build-depends:
       aeson ==2.*
     , base >=4.17 && <5
-    , containers >=0.5 && <0.8
+    , containers >=0.5 && <0.9
     , http-conduit >=2.2 && <3
     , lens >=4.15 && <6
     , lens-aeson >=1.2 && <2
@@ -53,10 +55,9 @@
       test
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      QuickCheck
-    , aeson ==2.*
+      aeson ==2.*
     , base >=4.17 && <5
-    , containers >=0.5 && <0.8
+    , containers >=0.5 && <0.9
     , hspec
     , http-conduit >=2.2 && <3
     , lens >=4.15 && <6
diff --git a/src/Math/OEIS.hs b/src/Math/OEIS.hs
--- a/src/Math/OEIS.hs
+++ b/src/Math/OEIS.hs
@@ -20,6 +20,7 @@
 import qualified Data.Vector        as V
 import           System.IO.Unsafe   (unsafePerformIO)
 
+import           Math.OEIS.Http
 import           Math.OEIS.Internal
 import           Math.OEIS.Types
 
@@ -47,12 +48,7 @@
 
 -- | searchSeq in IO
 searchSeq' :: SearchStatus -> Int -> IO (V.Vector OEISSeq)
-searchSeq' ss bound = do
-  results' <- getResults ss 0 bound []
-  let seqs
-        | V.null results' = []
-        | otherwise       = parseOEIS <$> results'
-  return seqs
+searchSeq' = searchSeqWith httpFetch
 
 
 -- | Look up a sequence on OEIS.
@@ -69,11 +65,7 @@
 
 -- | lookupSeq in IO
 lookupSeq' :: SearchStatus -> IO (Maybe OEISSeq)
-lookupSeq' ss = do
-  result <- getResult ss 0
-  return $ case result of
-             Just result' -> Just $ parseOEIS result'
-             _            -> Nothing
+lookupSeq' = lookupSeqWith httpFetch
 
 
 -- | Get sub-sequence on OEIS.
@@ -91,7 +83,7 @@
 
 -- | getSeqData in IO
 getSeqData' :: SearchStatus -> IO (Maybe SeqData)
-getSeqData' = ((seqData <$>) <$>) . lookupSeq'
+getSeqData' = getSeqDataWith httpFetch
 
 
 -- | Extend from sub-sequence.
@@ -108,12 +100,4 @@
 
 -- | extendSeq in IO
 extendSeq' :: [Integer] -> IO [Integer]
-extendSeq' [] = return []
-extendSeq' sd = do
-  oeis <- lookupSeq' (SubSeq sd)
-  return $ case oeis of
-    Just s -> extend sd (seqData s)
-    _      -> sd
-  where
-    extend :: SeqData -> SeqData -> SeqData
-    extend sd ext = fromMaybe sd . find (sd `isPrefixOf`) $ tails ext
+extendSeq' = extendSeqWith httpFetch
diff --git a/src/Math/OEIS/Http.hs b/src/Math/OEIS/Http.hs
new file mode 100644
--- /dev/null
+++ b/src/Math/OEIS/Http.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Math.OEIS.Http (Fetcher, httpFetch) where
+
+import qualified Data.Text           as T
+import qualified Data.Text.Encoding  as T
+import           Network.HTTP.Simple (getResponseBody, httpBS, parseRequest)
+
+type Fetcher = T.Text -> IO T.Text
+
+httpFetch :: Fetcher
+httpFetch uri = T.decodeUtf8 . getResponseBody <$> (httpBS =<< parseRequest (T.unpack uri))
diff --git a/src/Math/OEIS/Internal.hs b/src/Math/OEIS/Internal.hs
--- a/src/Math/OEIS/Internal.hs
+++ b/src/Math/OEIS/Internal.hs
@@ -17,9 +17,9 @@
 import qualified Data.Text.Encoding  as T
 import qualified Data.Text.IO        as T
 import qualified Data.Vector         as V
-import           Network.HTTP.Simple (getResponseBody, httpBS, parseRequest)
 import           System.IO.Unsafe    (unsafePerformIO)
 
+import           Math.OEIS.Http
 import           Math.OEIS.Types
 
 
@@ -71,22 +71,19 @@
 searchURI :: SearchStatus -> T.Text
 searchURI ss = baseSearchURI +.+ addPrefix ss
 
-openURL :: T.Text -> IO T.Text
-openURL x = T.decodeUtf8 . getResponseBody <$> (httpBS =<< parseRequest (T.unpack x))
-
-getJSON :: SearchStatus -> Int -> IO T.Text
-getJSON (Others txt) _ = return txt -- for test
-getJSON ss n           = openURL $ searchURI ss +.+ "&start=" +.+ T.pack (show n)
+getJSON :: Fetcher -> SearchStatus -> Int -> IO T.Text
+getJSON _ (Others txt) _ = return txt -- for test
+getJSON fetch ss n       = fetch $ searchURI ss +.+ "&start=" +.+ T.pack (show n)
 
 
 ----------------
 -- Parse JSON --
 ----------------
 -- Get all search results --
-getResults :: SearchStatus -> Int -> Int -> V.Vector Value -> IO (V.Vector Value)
-getResults ss start bound vs = do
+getResults :: Fetcher -> SearchStatus -> Int -> Int -> V.Vector Value -> IO (V.Vector Value)
+getResults fetch ss start bound vs = do
   when (bound < 0) $ fail "Upper-bound number of search results mast be non-negative."
-  jsn <- getJSON ss start
+  jsn <- getJSON fetch ss start
   let results' = decodeStrict $ T.encodeUtf8 jsn :: Maybe Array
       results = case results' of
         Nothing  -> return []
@@ -103,13 +100,13 @@
                 if bound /= 0 && diff <= 10 || len /= 10 then
                   return $ vs V.++ V.take diff vs'
                 else
-                  getResults ss start' bound $ vs V.++ vs'
+                  getResults fetch ss start' bound $ vs V.++ vs'
   results
 
 -- Get nth search result --
-getResult :: SearchStatus -> Int -> IO (Maybe Value)
-getResult ss n = do
-  results <- getResults ss 0 (n + 1) []
+getResult :: Fetcher -> SearchStatus -> Int -> IO (Maybe Value)
+getResult fetch ss n = do
+  results <- getResults fetch ss 0 (n + 1) []
   let result = results V.!? n
   return result
 
@@ -161,9 +158,9 @@
           _         -> (k, Just $ TXTS ts)
 
 
-resultLen :: SearchStatus -> IO (Maybe Int)
-resultLen ss = do
-  jsn <- getJSON ss 0
+resultLen :: Fetcher -> SearchStatus -> IO (Maybe Int)
+resultLen fetch ss = do
+  jsn <- getJSON fetch ss 0
   return $ fromInteger <$> jsn ^? key "count" . _Integer
 
 emptyOEIS :: OEISSeq
@@ -236,3 +233,36 @@
     (lang', func') = T.breakOn ")" t
     lang           = T.tail lang'
     func           = T.strip $ T.tail func'
+
+
+--------------------------------
+-- Functions with HTTP fetcher --
+--------------------------------
+searchSeqWith :: Fetcher -> SearchStatus -> Int -> IO (V.Vector OEISSeq)
+searchSeqWith fetch ss bound = do
+  results' <- getResults fetch ss 0 bound []
+  let seqs
+        | V.null results' = []
+        | otherwise       = parseOEIS <$> results'
+  return seqs
+
+lookupSeqWith :: Fetcher -> SearchStatus -> IO (Maybe OEISSeq)
+lookupSeqWith fetch ss = do
+  result <- getResult fetch ss 0
+  return $ case result of
+             Just result' -> Just $ parseOEIS result'
+             _            -> Nothing
+
+getSeqDataWith :: Fetcher -> SearchStatus -> IO (Maybe SeqData)
+getSeqDataWith fetch = ((seqData <$>) <$>) . lookupSeqWith fetch
+
+extendSeqWith :: Fetcher -> [Integer] -> IO [Integer]
+extendSeqWith _ [] = return []
+extendSeqWith fetch sd = do
+  oeis <- lookupSeqWith fetch (SubSeq sd)
+  return $ case oeis of
+    Just s -> extend sd (seqData s)
+    _      -> sd
+  where
+    extend :: SeqData -> SeqData -> SeqData
+    extend sd ext = fromMaybe sd . find (sd `isPrefixOf`) $ tails ext
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,58 +1,51 @@
 {-# LANGUAGE OverloadedStrings #-}
 
-import           Data.Aeson.Lens
-import           Data.Aeson.Types
-import           Data.List
-import           Data.Maybe            (fromJust)
-import qualified Data.Text             as T
-import qualified Data.Text.IO          as T
-import qualified Data.Vector           as V
-import           System.IO
-import           System.IO.Unsafe      (unsafePerformIO)
+import qualified Data.Text    as T
+import qualified Data.Text.IO as T
 import           Test.Hspec
-import           Test.Hspec.QuickCheck
-import           Test.QuickCheck.Gen
 
 import           Math.OEIS
+import           Math.OEIS.Http
 import           Math.OEIS.Internal
 
 
+mockFetch :: Fetcher
+mockFetch uri
+  | any (`T.isInfixOf` uri) ["id:A000027", "seq:1,2,3,4"] = T.readFile "test/fixtures/A000027.json"
+  | otherwise                                             = return "null"
+
 main :: IO ()
-main = do
-  hspec specLookupSeq
-  hspec specGetSeqData
-  hspec specExtendSeq
+main = hspec $ do
+  specLookupSeq
+  specGetSeqData
+  specExtendSeq
 
 specLookupSeq :: Spec
 specLookupSeq = describe "Test for lookupSeq" $ do
-  it "Compare lookup by ID with by SubSeq" $
-    lookupSeq (ID "A000027") `shouldBe` lookupSeq (SubSeq [1, 2, 3, 4, 5, 6, 7])
-  modifyMaxSuccess (const 10) $ prop "Compare lookup by ID with by SubSeq -2" $
-    \x ->
-    let rs   = unsafePerformIO $ generate $ resize 5 $ vectorOf x $ choose (1, 10)
-        seq1 = lookupSeq (SubSeq rs)
-        num  = maybe "" number seq1
-        seq2 = lookupSeq (ID num)
-    in seq2 `shouldBe` seq1
-  it "Get Maple function" $
-    maple <$> lookupSeq (ID "A000027") `shouldBe`
-    Just ["A000027 := n->n; seq(A000027(n), n=1..100);"]
+  it "Compare lookup by ID with by SubSeq" $ do
+    byID     <- lookupSeqWith mockFetch (ID "A000027")
+    bySubSeq <- lookupSeqWith mockFetch (SubSeq [1, 2, 3, 4, 5, 6, 7])
+    byID `shouldBe` bySubSeq
+  it "Get number" $ do
+    seq' <- lookupSeqWith mockFetch (ID "A000027")
+    number <$> seq' `shouldBe` Just "A000027"
+  it "Get Maple function" $ do
+    seq' <- lookupSeqWith mockFetch (ID "A000027")
+    maple <$> seq' `shouldBe` Just ["A000027 := n->n; seq(A000027(n), n=1..100);"]
   it "No search results" $
-    lookupSeq (SubSeq [1,3,4,5,4,3,6,10000000]) `shouldBe` Nothing
+    lookupSeqWith mockFetch (SubSeq [1, 3, 4, 5, 4, 3, 6, 10000000]) `shouldReturn` Nothing
 
 specGetSeqData :: Spec
 specGetSeqData = describe "Test for getSeqData" $ do
   it "Get SeqData" $
-    getSeqData (ID "A000027")`shouldBe` Just [1..77]
+    getSeqDataWith mockFetch (ID "A000027") `shouldReturn` Just [1..77]
   it "No SeqData" $
-    getSeqData (SubSeq [1,3,4,5,4,3,6,10000000]) `shouldBe` Nothing
+    getSeqDataWith mockFetch (SubSeq [1, 3, 4, 5, 4, 3, 6, 10000000]) `shouldReturn` Nothing
 
 specExtendSeq :: Spec
 specExtendSeq = describe "Test for extendSeq" $ do
-  modifyMaxSuccess (const 10) $ prop "Extend Seq" $
-    \x ->
-    let rs = unsafePerformIO $ generate $ resize 5 $ vectorOf x $ choose (1, 10)
-        seq = extendSeq rs
-    in rs `isInfixOf` seq
+  it "Extend Seq" $
+    extendSeqWith mockFetch [1, 2, 3, 4] `shouldReturn` [1..77]
   it "No extension" $
-    extendSeq [1,3,4,5,4,3,6,10000000] `shouldBe` [1,3,4,5,4,3,6,10000000]
+    extendSeqWith mockFetch [1, 3, 4, 5, 4, 3, 6, 10000000]
+      `shouldReturn` [1, 3, 4, 5, 4, 3, 6, 10000000]
diff --git a/test/fixtures/A000027.json b/test/fixtures/A000027.json
new file mode 100644
--- /dev/null
+++ b/test/fixtures/A000027.json
@@ -0,0 +1,196 @@
+[
+	{
+		"number": 27,
+		"id": "M0472 N0173",
+		"data": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77",
+		"name": "The positive integers. Also called the natural numbers, the whole numbers or the counting numbers, but these terms are ambiguous.",
+		"comment": [
+			"For some authors, the terms \"natural numbers\" and \"counting numbers\" include 0, i.e., refer to the nonnegative integers A001477; the term \"whole numbers\" frequently also designates the whole set of (signed) integers A001057.",
+			"a(n) is smallest positive integer which is consistent with sequence being monotonically increasing and satisfying a(a(n)) = n (cf. A007378).",
+			"Inverse Euler transform of A000219.",
+			"The rectangular array having A000027 as antidiagonals is the dispersion of the complement of the triangular numbers, A000217 (which triangularly form column 1 of this array). The array is also the transpose of A038722. - _Clark Kimberling_, Apr 05 2003",
+			"For nonzero x, define f(n) = floor(nx) - floor(n/x). Then f=A000027 if and only if x=tau or x=-tau. - _Clark Kimberling_, Jan 09 2005",
+			"Numbers of form (2^i)*k for odd k (i.e., n = A006519(n)*A000265(n)); thus n corresponds uniquely to an ordered pair (i,k) where i=A007814, k=A000265 (with A007814(2n)=A001511(n), A007814(2n+1)=0). - _Lekraj Beedassy_, Apr 22 2006",
+			"If the offset were changed to 0, we would have the following pattern: a(n)=binomial(n,0) + binomial(n,1) for the present sequence (number of regions in 1-space defined by n points), A000124 (number of regions in 2-space defined by n straight lines), A000125 (number of regions in 3-space defined by n planes), A000127 (number of regions in 4-space defined by n hyperplanes), A006261, A008859, A008860, A008861, A008862 and A008863, where the last six sequences are interpreted analogously and in each \"... by n ...\" clause an offset of 0 has been assumed, resulting in a(0)=1 for all of them, which corresponds to the case of not cutting with a hyperplane at all and therefore having one region. - Peter C. Heinig (algorithms(AT)gmx.de), Oct 19 2006",
+			"Define a number of points on a straight line to be in general arrangement when no two points coincide. Then these are the numbers of regions defined by n points in general arrangement on a straight line, when an offset of 0 is assumed. For instance, a(0)=1, since using no point at all leaves one region. The sequence satisfies the recursion a(n) = a(n-1) + 1. This has the following geometrical interpretation: Suppose there are already n-1 points in general arrangement, thus defining the maximal number of regions on a straight line obtainable by n-1 points, and now one more point is added in general arrangement. Then it will coincide with no other point and act as a dividing wall thereby creating one new region in addition to the a(n-1)=(n-1)+1=n regions already there, hence a(n)=a(n-1)+1. Cf. the comments on A000124 for an analogous interpretation. - Peter C. Heinig (algorithms(AT)gmx.de), Oct 19 2006",
+			"The sequence a(n)=n (for n=1,2,3) and a(n)=n+1 (for n=4,5,...) gives to the rank (minimal cardinality of a generating set) for the semigroup I_n\\S_n, where I_n and S_n denote the symmetric inverse semigroup and symmetric group on [n]. - _James East_, May 03 2007",
+			"The sequence a(n)=n (for n=1,2), a(n)=n+1 (for n=3) and a(n)=n+2 (for n=4,5,...) gives the rank (minimal cardinality of a generating set) for the semigroup PT_n\\T_n, where PT_n and T_n denote the partial transformation semigroup and transformation semigroup on [n]. - _James East_, May 03 2007",
+			"\"God made the integers; all else is the work of man.\" This famous quotation is a translation of \"Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk,\" spoken by Leopold Kronecker in a lecture at the Berliner Naturforscher-Versammlung in 1886. Possibly the first publication of the statement is in Heinrich Weber's \"Leopold Kronecker,\" Jahresberichte D.M.V. 2 (1893) 5-31. - _Clark Kimberling_, Jul 07 2007",
+			"Binomial transform of A019590, inverse binomial transform of A001792. - _Philippe Deléham_, Oct 24 2007",
+			"Writing A000027 as N, perhaps the simplest one-to-one correspondence between N X N and N is this: f(m,n) = ((m+n)^2 - m - 3n + 2)/2. Its inverse is given by I(k)=(g,h), where g = k - J(J-1)/2, h = J + 1 - g, J = floor((1 + sqrt(8k - 7))/2). Thus I(1)=(1,1), I(2)=(1,2), I(3)=(2,1) and so on; the mapping I fills the first-quadrant lattice by successive antidiagonals. - _Clark Kimberling_, Sep 11 2008",
+			"a(n) is also the mean of the first n odd integers. - _Ian Kent_, Dec 23 2008",
+			"Equals INVERTi transform of A001906, the even-indexed Fibonacci numbers starting (1, 3, 8, 21, 55, ...). - _Gary W. Adamson_, Jun 05 2009",
+			"These are also the 2-rough numbers: positive integers that have no prime factors less than 2. - _Michael B. Porter_, Oct 08 2009",
+			"Totally multiplicative sequence with a(p) = p for prime p. Totally multiplicative sequence with a(p) = a(p-1) + 1 for prime p. - _Jaroslav Krizek_, Oct 18 2009",
+			"Triangle T(k,j) of natural numbers, read by rows, with T(k,j) = binomial(k,2) + j = (k^2-k)/2 + j where 1 \u003c= j \u003c= k. In other words, a(n) = n = binomial(k,2) + j where k is the largest integer such that binomial(k,2) \u003c n and j = n - binomial(k,2). For example, T(4,1)=7, T(4,2)=8, T(4,3)=9, and T(4,4)=10. Note that T(n,n)=A000217(n), the n-th triangular number. - _Dennis P. Walsh_, Nov 19 2009",
+			"Hofstadter-Conway-like sequence (see A004001): a(n) = a(a(n-1)) + a(n-a(n-1)) with a(1) = 1, a(2) = 2. - _Jaroslav Krizek_, Dec 11 2009",
+			"a(n) is also the dimension of the irreducible representations of the Lie algebra sl(2). - _Leonid Bedratyuk_, Jan 04 2010",
+			"Floyd's triangle read by rows. - _Paul Muljadi_, Jan 25 2010",
+			"Number of numbers between k and 2k where k is an integer. - _Giovanni Teofilatto_, Mar 26 2010",
+			"Generated from a(2n) = r*a(n), a(2n+1) = a(n) + a(n+1), r = 2; in an infinite set, row 2 of the array shown in A178568. - _Gary W. Adamson_, May 29 2010",
+			"1/n = continued fraction [n]. Let barover[n] = [n,n,n,...] = 1/k. Then k - 1/k = n. Example: [2,2,2,...] = (sqrt(2) - 1) = 1/k, with k = (sqrt(2) + 1). Then 2 = k - 1/k. - _Gary W. Adamson_, Jul 15 2010",
+			"Number of n-digit numbers the binary expansion of which contains one run of 1's. - _Vladimir Shevelev_, Jul 30 2010",
+			"From _Clark Kimberling_, Jan 29 2011: (Start)",
+			"Let T denote the \"natural number array A000027\":",
+			"   1    2    4    7 ...",
+			"   3    5    8   12 ...",
+			"   6    9   13   18 ...",
+			"  10   14   19   25 ...",
+			"T(n,k) = n+(n+k-2)*(n+k-1)/2. See A185787 for a list of sequences based on T, such as rows, columns, diagonals, and sub-arrays. (End)",
+			"The Stern polynomial B(n,x) evaluated at x=2. See A125184. - _T. D. Noe_, Feb 28 2011",
+			"The denominator in the Maclaurin series of log(2), which is 1 - 1/2 + 1/3 - 1/4 + .... - _Mohammad K. Azarian_, Oct 13 2011",
+			"As a function of Bernoulli numbers B_n (cf. A027641: (1, -1/2, 1/6, 0, -1/30, 0, 1/42, ...)): let V = a variant of B_n changing the (-1/2) to (1/2). Then triangle A074909 (the beheaded Pascal's triangle) * [1, 1/2, 1/6, 0, -1/30, ...] = the vector [1, 2, 3, 4, 5, ...]. - _Gary W. Adamson_, Mar 05 2012",
+			"Number of partitions of 2n+1 into exactly two parts. - _Wesley Ivan Hurt_, Jul 15 2013",
+			"Integers n dividing u(n) = 2u(n-1) - u(n-2); u(0)=0, u(1)=1 (Lucas sequence A001477). - _Thomas M. Bridge_, Nov 03 2013",
+			"For this sequence, the generalized continued fraction a(1)+a(1)/(a(2)+a(2)/(a(3)+a(3)/(a(4)+...))), evaluates to 1/(e-2) = A194807. - _Stanislav Sykora_, Jan 20 2014",
+			"Engel expansion of e-1 (A091131 = 1.71828...). - _Jaroslav Krizek_, Jan 23 2014",
+			"a(n) is the number of permutations of length n simultaneously avoiding 213, 231 and 321 in the classical sense which are breadth-first search reading words of increasing unary-binary trees. For more details, see the entry for permutations avoiding 231 at A245898. - _Manda Riehl_, Aug 05 2014",
+			"a(n) is also the number of permutations simultaneously avoiding 213, 231 and 321 in the classical sense which can be realized as labels on an increasing strict binary tree with 2n-1 nodes. See A245904 for more information on increasing strict binary trees. - _Manda Riehl_, Aug 07 2014",
+			"a(n) = least k such that 2*Pi - Sum_{h=1..k} 1/(h^2 - h + 3/16) \u003c 1/n. - _Clark Kimberling_, Sep 28 2014",
+			"a(n) = least k such that Pi^2/6 - Sum_{h=1..k} 1/h^2 \u003c 1/n. - _Clark Kimberling_, Oct 02 2014",
+			"Determinants of the spiral knots S(2,k,(1)). a(k) = det(S(2,k,(1))). These knots are also the torus knots T(2,k). - _Ryan Stees_, Dec 15 2014",
+			"As a function, the restriction of the identity map on the nonnegative integers {0,1,2,3...}, A001477, to the positive integers {1,2,3,...}. - _M. F. Hasler_, Jan 18 2015",
+			"See also A131685(k) = smallest positive number m such that c(i) = m (i^1 + 1) (i^2 + 2) ... (i^k+ k) / k! takes integral values for all i\u003e=0: For k=1, A131685(k)=1, which implies that this is a well defined integer sequence. - _Alexander R. Povolotsky_, Apr 24 2015",
+			"a(n) is the number of compositions of n+2 into n parts avoiding the part 2. - _Milan Janjic_, Jan 07 2016",
+			"Does not satisfy Benford's law [Berger-Hill, 2017] - _N. J. A. Sloane_, Feb 07 2017",
+			"Parametrization for the finite multisubsets of the positive integers, where, for p_j the j-th prime, n = Product_{j} p_j^(e_j) corresponds to the multiset containing e_j copies of j ('Heinz encoding' -- see A056239, A003963, A289506, A289507, A289508, A289509). - _Christopher J. Smyth_, Jul 31 2017",
+			"The arithmetic function v_1(n,1) as defined in A289197. - _Robert Price_, Aug 22 2017",
+			"For n \u003e= 3, a(n)=n is the least area that can be obtained for an irregular octagon drawn in a square of n units side, whose sides are parallel to the axes, with 4 vertices that coincide with the 4 vertices of the square, and the 4 remaining vertices having integer coordinates. See Affaire de Logique link. - _Michel Marcus_, Apr 28 2018",
+			"a(n+1) is the order of rowmotion on a poset defined by a disjoint union of chains of length n. - _Nick Mayers_, Jun 08 2018",
+			"Number of 1's in n-th generation of 1-D Cellular Automata using Rules 50, 58, 114, 122, 178, 186, 206, 220, 238, 242, 250 or 252 in the Wolfram numbering scheme, started with a single 1. - _Frank Hollstein_, Mar 25 2019",
+			"(1, 2, 3, 4, 5, ...) is the fourth INVERT transform of (1, -2, 3, -4, 5, ...). - _Gary W. Adamson_, Jul 15 2019",
+			"a(n) is the chromatic number and the clique number of the complete graph K_n. - _Igor Blokhin_, Mar 09 2026"
+		],
+		"reference": [
+			"T. M. Apostol, Introduction to Analytic Number Theory, Springer-Verlag, 1976, page 1.",
+			"T. M. Apostol, Modular Functions and Dirichlet Series in Number Theory, Springer-Verlag, 1990, page 25.",
+			"John H. Conway and Richard K. Guy, The Book of Numbers, New York: Springer-Verlag, 1996. See p. 22.",
+			"W. Fulton and J. Harris, Representation theory: a first course, (1991), page 149. [From _Leonid Bedratyuk_, Jan 04 2010]",
+			"I. S. Gradstein and I. M. Ryshik, Tables of series, products, and integrals, Volume 1, Verlag Harri Deutsch, 1981.",
+			"R. E. Schwartz, You Can Count on Monsters: The First 100 numbers and Their Characters, A. K. Peters and MAA, 2010.",
+			"N. J. A. Sloane, A Handbook of Integer Sequences, Academic Press, 1973 (includes this sequence).",
+			"N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence)."
+		],
+		"link": [
+			"N. J. A. Sloane, \u003ca href=\"/A000027/b000027.txt\"\u003eTable of n, a(n) for n = 1..500000\u003c/a\u003e [a large file]",
+			"Archimedes Laboratory, \u003ca href=\"http://www.archimedes-lab.org/numbers/Num1_200.html\"\u003eWhat's special about this number?\u003c/a\u003e",
+			"Affaire de Logique, \u003ca href=\"http://www.affairedelogique.com/espace_probleme.php?corps=probleme\u0026amp;num=1051\"\u003ePick et Pick et Colegram\u003c/a\u003e (in French), No. 1051, 18-04-2018.",
+			"Paul Barry, \u003ca href=\"http://www.cs.uwaterloo.ca/journals/JIS/VOL8/Barry/barry84.html\"\u003eA Catalan Transform and Related Transformations on Integer Sequences\u003c/a\u003e, Journal of Integer Sequences, Vol. 8 (2005), Article 05.4.5.",
+			"James Barton, \u003ca href=\"http://www.virtuescience.com/number-list.html\"\u003eThe Numbers\u003c/a\u003e",
+			"A. Berger and T. P. Hill, \u003ca href=\"http://www.ams.org/publications/journals/notices/201702/rnoti-p132.pdf\"\u003eWhat is Benford's Law?\u003c/a\u003e, Notices, Amer. Math. Soc., 64:2 (2017), 132-134.",
+			"A. Breiland, L. Oesper, and L. Taalman, \u003ca href=\"https://doi.org/10.35834/mjms/1316027244\"\u003ep-Coloring classes of torus knots\u003c/a\u003e, Online Missouri J. Math. Sci., 21 (2009), 120-126.",
+			"N. Brothers, S. Evans, L. Taalman, L. Van Wyk, D. Witczak, and C. Yarnall, \u003ca href=\"https://doi.org/10.35834/mjms/1312232716\"\u003eSpiral knots\u003c/a\u003e, Missouri J. of Math. Sci., 22 (2010).",
+			"C. K. Caldwell, \u003ca href=\"https://t5k.org/curios\"\u003ePrime Curios\u003c/a\u003e",
+			"Case and Abiessu, \u003ca href=\"http://everything2.net/index.pl?node_id=17633\u0026amp;displaytype=printable\u0026amp;lastnode_id=17633\"\u003einteresting number\u003c/a\u003e",
+			"S. Crandall, \u003ca href=\"http://tingilinde.typepad.com/starstuff/2005/11/significant_int.html\"\u003enotes on interesting digital ephemera\u003c/a\u003e",
+			"O. Curtis, \u003ca href=\"http://users.pipeline.com.au/owen/Numbers.html\"\u003eInteresting Numbers\u003c/a\u003e",
+			"M. DeLong, M. Russell, and J. Schrock, \u003ca href=\"https://doi.org/10.2140/involve.2015.8.361\"\u003eColorability and determinants of T(m,n,r,s) twisted torus knots for n equiv. +/-1(mod m)\u003c/a\u003e, Involve, Vol. 8 (2015), No. 3, 361-384.",
+			"Walter Felscher, \u003ca href=\"http://sunsite.utk.edu/math_archives/.http/hypermail/historia/may99/0210.html\"\u003eHistoria Matematica Mailing List Archive.\u003c/a\u003e",
+			"P. Flajolet and R. Sedgewick, \u003ca href=\"http://algo.inria.fr/flajolet/Publications/books.html\"\u003eAnalytic Combinatorics\u003c/a\u003e, 2009; see page 371.",
+			"Robert R. Forslund, \u003ca href=\"https://www.emis.de/journals/SWJPAM/Vol1_1995/rrf01.ps\"\u003eA logical alternative to the existing positional number system\u003c/a\u003e, Southwest Journal of Pure and Applied Mathematics, Vol. 1 1995 pp. 27-29.",
+			"E. Friedman, \u003ca href=\"https://erich-friedman.github.io/numbers.html\"\u003eWhat's Special About This Number?\u003c/a\u003e",
+			"R. K. Guy, \u003ca href=\"/A000346/a000346.pdf\"\u003eLetter to N. J. A. Sloane\u003c/a\u003e",
+			"Milan Janjic, \u003ca href=\"https://old.pmf.unibl.org/wp-content/uploads/2017/10/enumfun.pdf\"\u003eEnumerative Formulas for Some Functions on Finite Sets\u003c/a\u003e",
+			"Mike Keith, \u003ca href=\"https://web.archive.org/web/20080509124530/http://users.aol.com/s6sj7gt/interest.htm\"\u003eAll Numbers Are Interesting: A Constructive Approach\u003c/a\u003e",
+			"Leonardo of Pisa [Leonardo Pisano], \u003ca href=\"/A000027/a000027.jpg\"\u003eIllustration of initial terms\u003c/a\u003e, from Liber Abaci [The Book of Calculation], 1202 (photo by David Singmaster).",
+			"Feihu Liu, Guoce Xin, and Chen Zhang, \u003ca href=\"https://arxiv.org/abs/2412.18744\"\u003eEhrhart Polynomials of Order Polytopes: Interpreting Combinatorial Sequences on the OEIS\u003c/a\u003e, arXiv:2412.18744 [math.CO], 2024. See pp. 15, 24.",
+			"Robert Munafo, \u003ca href=\"http://www.mrob.com/pub/math/numbers.html\"\u003eNotable Properties of Specific Numbers\u003c/a\u003e.",
+			"Kival Ngaokrajang, \u003ca href=\"/A000027/a000027_2.pdf\"\u003eIllustration about relation to many other sequences\u003c/a\u003e, when the sequence is considered as a triangular table read by its antidiagonals. \u003ca href=\"/A000027/a000027_3.pdf\"\u003eAdditional illustrations\u003c/a\u003e when the sequence is considered as a centered triangular table read by rows.",
+			"G. Pfeiffer, \u003ca href=\"http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Pfeiffer/pfeiffer6.html\"\u003eCounting Transitive Relations\u003c/a\u003e, Journal of Integer Sequences, Vol. 7 (2004), Article 04.3.2.",
+			"R. Phillips, \u003ca href=\"http://richardphillips.org.uk/number/Num1.htm\"\u003eNumbers from one to thirty-one\u003c/a\u003e",
+			"J. Striker, \u003ca href=\"http://www.ams.org/publications/journals/notices/201706/rnoti-p543.pdf\"\u003eDynamical Algebraic Combinatorics: Promotion, Rowmotion, and Resonance\u003c/a\u003e, Notices of the AMS, June/July 2017, pp. 543-549.",
+			"G. Villemin's Almanac of Numbers, \u003ca href=\"http://villemin.gerard.free.fr/aNombre/Nb0a50.htm\"\u003eNOMBRES en BREF (in French)\u003c/a\u003e",
+			"Eric Weisstein's World of Mathematics, \u003ca href=\"https://mathworld.wolfram.com/NaturalNumber.html\"\u003eNatural Number\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/PositiveInteger.html\"\u003ePositive Integer\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/CountingNumber.html\"\u003eCounting Number\u003c/a\u003e \u003ca href=\"https://mathworld.wolfram.com/Composition.html\"\u003eComposition\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/Davenport-SchinzelSequence.html\"\u003eDavenport-Schinzel Sequence\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/IdempotentNumber.html\"\u003eIdempotent Number\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/N.html\"\u003eN\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/SmarandacheCeilFunction.html\"\u003eSmarandache Ceil Function\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/WholeNumber.html\"\u003eWhole Number\u003c/a\u003e, \u003ca href=\"https://mathworld.wolfram.com/EngelExpansion.html\"\u003eEngel Expansion\u003c/a\u003e, and \u003ca href=\"https://mathworld.wolfram.com/TrinomialCoefficient.html\"\u003eTrinomial Coefficient\u003c/a\u003e",
+			"Wikipedia, \u003ca href=\"https://en.wikipedia.org/wiki/List_of_numbers\"\u003eList of numbers\u003c/a\u003e, \u003ca href=\"https://en.wikipedia.org/wiki/Interesting_number_paradox\"\u003eInteresting number paradox\u003c/a\u003e, and \u003ca href=\"https://en.wikipedia.org/wiki/Floyd%27s_triangle\"\u003eFloyd's triangle\u003c/a\u003e",
+			"Robert G. Wilson v, \u003ca href=\"/A000027/a000027.txt\"\u003eEnglish names for the numbers from 0 to 11159 without spaces or hyphens\u003c/a\u003e",
+			"Robert G. Wilson v, \u003ca href=\"/A001477/a001477.txt\"\u003eAmerican English names for the numbers from 0 to 100999 without spaces or hyphens\u003c/a\u003e",
+			"\u003ca href=\"/index/Cor#core\"\u003eIndex entries for \"core\" sequences\u003c/a\u003e",
+			"\u003ca href=\"/index/Aa#aan\"\u003eIndex entries for sequences of the a(a(n)) = 2n family\u003c/a\u003e",
+			"\u003ca href=\"/index/Per#IntegerPermutation\"\u003eIndex entries for sequences that are permutations of the natural numbers\u003c/a\u003e",
+			"\u003ca href=\"/index/Par#partN\"\u003eIndex entries for related partition-counting sequences\u003c/a\u003e",
+			"\u003ca href=\"/index/Rec#order_02\"\u003eIndex entries for linear recurrences with constant coefficients\u003c/a\u003e, signature (2,-1).",
+			"\u003ca href=\"/index/Di#divseq\"\u003eIndex to divisibility sequences\u003c/a\u003e",
+			"\u003ca href=\"/index/Be#Benford\"\u003eIndex entries for sequences related to Benford's law\u003c/a\u003e"
+		],
+		"formula": [
+			"a(2k+1) = A005408(k), k \u003e= 0, a(2k) = A005843(k), k \u003e= 1.",
+			"Multiplicative with a(p^e) = p^e. - _David W. Wilson_, Aug 01 2001",
+			"Another g.f.: Sum_{n\u003e0} phi(n)*x^n/(1-x^n) (Apostol).",
+			"When seen as an array: T(k, n) = n+1 + (k+n)*(k+n+1)/2. Main diagonal is 2n*(n+1)+1 (A001844), antidiagonal sums are n*(n^2+1)/2 (A006003). - _Ralf Stephan_, Oct 17 2004",
+			"Dirichlet generating function: zeta(s-1). - _Franklin T. Adams-Watters_, Sep 11 2005",
+			"G.f.: x/(1-x)^2. E.g.f.: x*exp(x). a(n)=n. a(-n)=-a(n).",
+			"Series reversion of g.f. A(x) is x*C(-x)^2 where C(x) is the g.f. of A000108. - _Michael Somos_, Sep 04 2006",
+			"G.f. A(x) satisfies 0 = f(A(x), A(x^2)) where f(u, v) = u^2 - v - 4*u*v. - _Michael Somos_, Oct 03 2006",
+			"Convolution of A000012 (the all-ones sequence) with itself. - _Tanya Khovanova_, Jun 22 2007",
+			"a(n) = 2*a(n-1)-a(n-2); a(1)=1, a(2)=2. a(n) = 1+a(n-1). - _Philippe Deléham_, Nov 03 2008",
+			"a(n) = A000720(A000040(n)). - _Juri-Stepan Gerasimov_, Nov 29 2009",
+			"a(n+1) = Sum_{k=0..n} A101950(n,k). - _Philippe Deléham_, Feb 10 2012",
+			"a(n) = Sum_{d | n} phi(d) = Sum_{d | n} A000010(d). - _Jaroslav Krizek_, Apr 20 2012",
+			"G.f.: x * Product_{j\u003e=0} (1+x^(2^j))^2 = x * (1+2*x+x^2) * (1+2*x^2+x^4) * (1+2*x^4+x^8) * ... = x + 2x^2 + 3x^3 + ... . - _Gary W. Adamson_, Jun 26 2012",
+			"a(n) = det(binomial(i+1,j), 1 \u003c= i,j \u003c= n). - _Mircea Merca_, Apr 06 2013",
+			"E.g.f.: x*E(0), where E(k) = 1 + 1/(x - x^3/(x^2 + (k+1)/E(k+1) )); (continued fraction). - _Sergei N. Gladkovskii_, Aug 03 2013",
+			"From _Wolfdieter Lang_, Oct 09 2013: (Start)",
+			"a(n) = Product_{k=1..n-1} 2*sin(Pi*k/n), n \u003e 1.",
+			"a(n) = Product_{k=1..n-1} (2*sin(Pi*k/(2*n)))^2, n \u003e 1.",
+			"These identities are used in the calculation of products of ratios of lengths of certain lines in a regular n-gon. For the first identity see the Gradstein-Ryshik reference, p. 62, 1.392 1., bringing the first factor there to the left hand side and taking the limit x -\u003e 0 (L'Hôpital). The second line follows from the first one. Thanks to _Seppo Mustonen_ who led me to consider n-gon lengths products. (End)",
+			"a(n) = Sum_{j=0..k} (-1)^(j-1)*j*binomial(n,j)*binomial(n-1+k-j,k-j), k\u003e=0. - _Mircea Merca_, Jan 25 2014",
+			"a(n) = A052410(n)^A052409(n). - _Reinhard Zumkeller_, Apr 06 2014",
+			"a(n) = Sum_{k=1..n^2+2*n} 1/(sqrt(k)+sqrt(k+1)). - _Pierre CAMI_, Apr 25 2014",
+			"a(n) = floor(1/sin(1/n)) = floor(cot(1/(n+1))) = ceiling(cot(1/n)). - _Clark Kimberling_, Oct 08 2014",
+			"a(n) = floor(1/(log(n+1)-log(n))). - _Thomas Ordowski_, Oct 10 2014",
+			"a(k) = det(S(2,k,1)). - _Ryan Stees_, Dec 15 2014",
+			"a(n) = 1/(1/(n+1) + 1/(n+1)^2 + 1/(n+1)^3 + ...). - _Pierre CAMI_, Jan 22 2015",
+			"a(n) = Sum_{m=0..n-1} Stirling1(n-1,m)*Bell(m+1), for n \u003e= 1. This corresponds to Bell(m+1) = Sum_{k=0..m} Stirling2(m, k)*(k+1), for m \u003e= 0, from the fact that Stirling2*Stirling1 = identity matrix. See A048993, A048994 and A000110. - _Wolfdieter Lang_, Feb 03 2015",
+			"a(n) = Sum_{k=1..2n-1}(-1)^(k+1)*k*(2n-k). In addition, surprisingly, a(n) = Sum_{k=1..2n-1}(-1)^(k+1)*k^2*(2n-k)^2. - _Charlie Marion_, Jan 05 2016",
+			"G.f.: x/(1-x)^2 = (x * r(x) *r(x^3) * r(x^9) * r(x^27) * ...), where r(x) = (1 + x + x^2)^2 = (1 + 2x + 3x^2 + 2x^3 + x^4). - _Gary W. Adamson_, Jan 11 2017",
+			"a(n) = floor(1/(Pi/2-arctan(n))). - _Clark Kimberling_, Mar 11 2020",
+			"a(n) = Sum_{d|n} mu(n/d)*sigma(d). - _Ridouane Oudra_, Oct 03 2020",
+			"a(n) = Sum_{k=1..n} phi(gcd(n,k))/phi(n/gcd(n,k)). - _Richard L. Ollerton_, May 09 2021",
+			"a(n) = S(n-1, 2), with the Chebyshev S-polynomials A049310. - _Wolfdieter Lang_, Mar 09 2023",
+			"From _Peter Bala_, Nov 02 2024: (Start)",
+			"For positive integer m, a(n) = (1/m)* Sum_{k = 1..2*m*n-1} (-1)^(k+1) * k * (2*m*n - k) = (1/m) * Sum_{k = 1..2*m*n-1} (-1)^(k+1) * k^2 * (2*m*n - k)^2 (the case m = 1 is given above).",
+			"a(n) = Sum_{k = 0..3*n} (-1)^(n+k+1) * k * binomial(3*n+k, 2*k). (End)",
+			"T(n, k) = n + binomial(n+k-1, 2). - _Ruud H.G. van Tol_, Mar 10 2026"
+		],
+		"maple": [
+			"A000027 := n-\u003en; seq(A000027(n), n=1..100);"
+		],
+		"mathematica": [
+			"Range@ 77 (* _Robert G. Wilson v_, Mar 31 2015 *)"
+		],
+		"program": [
+			"(Magma) [ n : n in [1..100]];",
+			"(PARI) {a(n) = n};",
+			"(R) 1:100",
+			"(Shell) seq 1 100",
+			"(Haskell)",
+			"a000027 = id",
+			"a000027_list = [1..]  -- _Reinhard Zumkeller_, May 07 2012",
+			"(Maxima) makelist(n, n, 1, 30); /* _Martin Ettl_, Nov 07 2012 */",
+			"(Python)",
+			"def A000027(n): return n # _Chai Wah Wu_, May 09 2022",
+			"(Julia) print([n for n in 1:280]) # _Paul Muljadi_, Apr 09 2024",
+			"(Perl) print join(\", \", 1..280) # _Paul Muljadi_, May 29 2024"
+		],
+		"xref": [
+			"A001477 = nonnegative numbers.",
+			"Partial sums of A000012.",
+			"Cf. A001478, A001906, A007931, A007932, A027641, A074909, A089353 (multisets), A178568, A194807.",
+			"Cf. A026081 = integers in reverse alphabetical order in U.S. English, A107322 = English name for number and its reverse have the same number of letters, A119796 = zero through ten in alphabetical order of English reverse spelling, A005589, etc. Cf. A185787 (includes a list of sequences based on the natural number array A000027).",
+			"Cf. Boustrophedon transforms: A000737, A231179;",
+			"Cf. A038722 (mirrored when seen as triangle), A056011 (boustrophedon).",
+			"Cf. A048993, A048994, A000110 (see the Feb 03 2015 formula).",
+			"Cf. A289187, A000010, A008683, A000203, A049310."
+		],
+		"keyword": "core,nonn,easy,mult,tabl",
+		"offset": "1,2",
+		"author": "_N. J. A. Sloane_",
+		"ext": [
+			"Links edited by _Daniel Forgues_, Oct 07 2009"
+		],
+		"references": 2329,
+		"revision": 718,
+		"time": "2026-06-28T15:47:49-04:00",
+		"created": "1991-04-30T03:00:00-04:00"
+	}
+]
