data Base = A |  T |  G |  C
          deriving Eq
type Sequence = [Base]
type Vector = [Float]
type Matrix = [Vector]
type Cluster = [Matrix]
type Clusters = [Cluster]
--delta = "atgc"
delta = [A,T,G,C]
base2vec :: Base -> Vector
base2vec c = [if c == d then 1 else 0 | d <- delta]

seq2matrix :: Sequence -> Matrix
seq2matrix seq = [base2vec base | base <- seq]

columnEntropy :: Vector -> Float
columnEntropy v = -1 *( sum $ map (\x -> (x + eps) * log (x + eps)) v)

eps = 0.0000000000001
entropy :: Matrix -> Float
entropy m = sum $ map columnEntropy m

matrixAdd :: Matrix -> Matrix -> Matrix
matrixAdd = zipWith (zipWith (+))

matrixSum :: Cluster -> Matrix
matrixSum = foldl1 matrixAdd

center :: Cluster -> Matrix
center matrices = [map (/n) v | v <- s]
                      where s = matrixSum matrices
                            n = fromIntegral $ length matrices



flatten :: Matrix -> [Float]
flatten = foldl1 (++)

distance :: Matrix -> Matrix -> Float
distance mat1 mat2 = sum $ map (**2) (zipWith (-) m1 m2)
                     where [m1, m2] = map flatten [mat1, mat2]

updateClusters :: Clusters -> Clusters
updateClusters clusters = [[m | m <- matrices, closest m c] | c <- centers]
                         where matrices = foldr1 (++) clusters
                               centers = map center clusters
                               closest m c = (all (\c2 -> (distance m c) <= (distance m c2)) centers)

sumOfSquares :: Cluster -> Float
sumOfSquares cluster = sum $ map (\m -> (distance m c)**2) cluster
    where c = center cluster

sumsOfSquares :: Clusters -> [Float]
sumsOfSquares = map sumOfSquares

initialClusters :: [Matrix] -> Int -> Clusters
initialClusters [] k = []
initialClusters matrices k = (take n matrices) : (initialClusters (drop n matrices) (k - 1))
                             where n = ceiling ((fromIntegral $ length matrices) / (fromIntegral k))

fitness :: Clusters -> Float
fitness = sum.sumsOfSquares

fixPoint :: (Eq a) => (a -> a) -> a -> a
fixPoint f x 
    | y == x = y
    | otherwise = fixPoint f y
                  where y = f x

centers :: Clusters -> [Matrix]
centers = map center

cen1 = centers gen1
gen1 = iterates!!1
iterates = iterate updateClusters clusters
clusters = initialClusters matrices 4
matrices = map seq2matrix crp
m1 = seq2matrix [A, T, G, C]
m2 = seq2matrix [C, G, T, A]
ms = [m1, m2, m1, m2]

--formatting stuff
cleaveAt :: Char -> String -> (String, String)
cleaveAt c str = (takeWhile (/= c) str, drop 1 (dropWhile (/= c) str))

expToDec :: String -> String
expToDec str 
         | not $ 'e' `elem` str = str
         | 'e' `elem` str = filler ++ m
         where (mantissa, exponent) = cleaveAt 'e' str
               m = filter (/= '.') mantissa
               filler = "0." ++ ['0' | n <- [1.. -(read exponent) - 1]]

truncateTo::String -> Int -> String
truncateTo str d  = fore ++ aft ++ filler
               where fore = takeWhile (/= '.') formatstr
                     aft = take (d + 1) (dropWhile (/= '.') formatstr)
                     filler = ['0' | n <- [1..(d - length(aft) + 1)]]
                     formatstr = expToDec str

printableMatrix :: Matrix -> Int -> String
printableMatrix matrix d = foldl1 (++) [b ++ " " ++ foldl1 (++) [(truncateTo (show (v!!i)) d) ++ " " | v <- matrix] ++ "\n" 
                          | (b,i) <- zip ["A","T","G","C"] [0..3]]

printMatrix :: Matrix -> Int -> IO()
printMatrix matrix d = putStr $ printableMatrix matrix d

crp = [[T, A, A, A, G, T, G, G, C, G, G, G, G, A, T, C, A, C, T, C, C, C],
       [A, A, A, C, G, T, G, C, T, G, C, C, G, A, T, A, G, C, T, A, T, C],
       [A, T, T, C, G, T, G, A, A, G, T, C, G, A, T, T, A, A, G, T, C, A],
       [A, T, A, A, G, T, G, C, C, A, A, A, A, A, T, T, A, C, A, T, G, T],
       [A, A, G, C, A, G, G, A, T, T, T, A, G, C, T, C, A, C, A, C, T, T],
       [A, A, A, T, G, T, G, A, T, A, C, C, A, A, T, C, A, C, A, G, A, A],
       [A, T, T, G, G, T, G, A, T, C, C, A, T, A, A, A, A, C, A, A, T, A],
       [A, T, T, G, G, T, G, A, G, G, A, A, C, T, T, A, A, C, A, A, T, A],
       [T, A, T, C, G, A, G, T, T, A, A, G, T, G, T, C, A, C, T, T, T, T],
       [T, T, T, T, T, T, T, A, C, C, A, A, G, G, T, A, A, C, A, A, T, C],
       [T, T, A, T, T, T, G, C, A, C, G, G, C, G, T, C, A, C, A, C, T, T],
       [C, T, T, T, T, T, G, T, A, A, C, A, A, T, T, C, A, A, A, C, T, T],
       [A, T, T, T, G, T, G, C, A, T, A, G, T, T, A, C, A, A, C, T, T, T],
       [A, A, A, C, G, T, T, A, T, A, T, A, T, G, T, C, A, A, G, T, T, G],
       [A, G, T, T, G, T, T, A, A, A, A, T, G, T, G, C, A, C, A, G, T, T],
       [A, A, A, T, G, T, G, C, A, C, A, G, T, T, T, C, A, T, G, A, T, T],
       [T, T, T, C, A, T, G, A, T, T, T, C, A, A, T, C, A, A, A, A, C, C],
       [T, A, G, C, G, T, G, A, C, C, T, C, C, T, T, C, A, C, C, G, A, G],
       [A, A, T, G, G, C, T, A, T, C, G, A, A, A, T, C, A, A, A, G, T, A],
       [A, A, T, T, G, T, T, A, A, C, A, A, T, T, T, T, G, T, A, A, A, A],
       [T, T, T, T, G, T, A, A, A, C, A, G, A, T, T, A, A, C, A, C, C, T],
       [A, A, T, T, G, T, G, A, T, G, A, C, G, A, T, C, A, C, A, C, A, T],
       [A, T, A, T, A, T, A, A, A, A, G, C, G, A, T, C, A, A, A, A, A, A],
       [A, A, T, T, T, T, G, A, A, T, T, A, A, G, T, A, A, A, T, T, T, A],
       [T, T, C, T, G, A, A, A, A, T, C, A, T, A, T, C, T, C, A, T, C, T],
       [T, T, T, C, T, G, A, A, A, A, T, C, A, T, A, T, C, T, C, A, T, C],
       [A, A, T, T, A, T, G, A, T, C, C, G, G, A, C, T, A, T, G, A, T, T],
       [T, T, C, T, T, T, A, A, C, A, G, G, A, A, T, A, A, A, A, T, T, A],
       [A, A, A, T, T, T, A, A, G, C, C, C, A, A, T, C, G, A, A, A, A, T],
       [T, G, T, T, G, T, G, A, T, C, G, G, C, G, A, C, A, C, T, T, C, G],
       [A, A, A, T, A, T, G, C, T, G, T, A, A, G, G, C, T, C, A, T, A, T],
       [A, A, T, A, T, G, C, T, G, T, A, A, G, G, C, T, C, A, T, A, T, C],
       [A, T, T, T, A, T, G, G, A, T, G, A, A, A, T, C, A, C, T, A, T, G],
       [C, T, T, T, G, T, G, A, T, C, T, C, T, C, T, C, G, C, A, C, C, C],
       [A, T, A, T, G, C, G, T, T, T, C, A, G, T, T, A, A, C, G, T, T, T],
       [A, T, A, A, G, C, G, T, A, G, C, G, C, A, T, C, A, G, G, C, A, A],
       [C, T, G, T, G, T, G, A, A, A, T, T, G, T, T, A, T, C, C, G, C, T],
       [A, T, G, A, G, T, G, A, G, C, T, A, A, C, T, C, A, C, A, T, T, A],
       [T, T, C, T, G, C, A, T, A, T, T, A, A, T, T, G, A, C, A, T, T, T],
       [A, T, C, T, T, T, G, A, G, A, T, A, A, C, G, C, A, C, T, T, T, C],
       [G, A, A, A, G, T, G, C, G, T, T, A, T, C, T, C, A, A, A, G, A, T],
       [A, A, G, T, A, T, G, G, A, G, A, A, G, T, T, A, A, C, A, T, T, A],
       [T, A, A, T, G, T, T, A, A, C, T, T, C, T, C, C, A, T, A, C, T, T],
       [C, G, T, T, C, T, G, G, T, G, G, T, T, G, T, G, A, T, G, G, T, G],
       [C, A, C, C, A, T, C, A, C, A, A, C, C, A, C, C, A, G, A, A, C, G],
       [T, T, A, T, T, T, C, A, C, T, G, C, A, A, A, C, G, T, A, C, T, T],
       [C, A, C, T, G, C, A, A, A, C, G, T, A, C, T, T, T, C, C, A, G, T],
       [A, A, C, T, G, T, G, A, A, A, C, G, A, A, A, C, A, T, A, T, T, T],
       [A, A, A, C, G, T, G, A, A, C, G, C, A, A, T, C, G, A, T, T, A, C],
       [G, A, A, T, T, T, A, A, T, C, A, T, G, T, T, T, A, C, A, G, T, A],
       [A, T, A, A, T, T, G, T, T, T, T, A, T, T, T, C, A, C, A, T, T, G],
       [A, A, T, A, G, T, G, A, C, C, T, C, G, C, G, C, A, A, A, A, T, G],
       [A, A, A, C, T, G, G, A, A, G, A, A, G, G, T, C, A, C, A, C, C, A],
       [T, A, T, T, G, T, G, A, C, C, T, T, G, T, T, T, A, C, C, C, A, G],
       [C, A, A, A, A, T, G, G, T, G, T, A, T, G, T, C, A, C, G, T, A, T],
       [C, A, A, T, G, T, G, A, T, T, A, T, T, T, C, A, A, G, A, T, G, T],
       [A, T, T, T, G, T, G, A, A, G, T, A, G, A, T, C, T, C, T, A, T, T],
       [A, A, C, G, G, T, G, C, T, G, G, G, A, T, T, T, A, C, G, C, T, T],
       [G, A, G, T, T, C, G, A, T, C, C, G, G, C, G, A, A, T, T, T, T, T],
       [G, T, T, T, G, T, C, A, T, C, A, G, T, C, T, C, G, A, A, T, A, T],
       [A, G, T, T, G, C, A, A, T, T, C, G, T, G, G, C, A, A, A, A, A, T],
       [A, T, C, A, A, T, G, A, A, A, A, A, T, T, G, C, A, C, A, G, T, A],
       [T, G, G, T, G, T, G, A, C, G, G, C, G, T, T, A, A, A, A, G, T, A],
       [G, T, T, T, G, T, T, G, C, T, G, A, A, C, G, C, A, C, A, C, T, T],
       [G, A, T, T, G, T, G, C, G, C, T, T, T, G, T, C, G, A, A, T, T, T],
       [A, G, A, G, T, T, G, A, C, A, T, A, G, T, G, C, G, C, G, T, T, T],
       [C, G, G, A, G, T, G, A, T, C, G, A, G, T, T, A, A, C, A, T, T, G],
       [A, T, G, G, A, T, G, A, A, A, A, T, A, A, T, C, A, T, A, T, T, T],
       [T, T, T, T, G, T, G, A, G, T, T, T, T, G, T, C, A, C, C, A, A, A],
       [A, T, T, T, G, C, G, A, T, A, C, G, A, A, T, T, A, A, A, T, T, T],
       [A, A, A, T, G, T, A, A, G, C, T, G, T, G, C, C, A, C, G, T, T, T],
       [A, G, A, G, A, T, G, A, A, A, A, A, T, G, T, C, A, A, A, A, T, T],
       [T, A, T, C, G, T, G, A, C, C, T, G, G, A, T, C, A, C, T, G, T, T],
       [A, T, T, T, A, T, C, A, T, G, T, G, G, G, G, C, A, T, C, C, T, T],
       [A, T, G, C, G, C, G, C, G, G, C, G, C, T, G, C, A, A, A, T, T, T],
       [C, A, G, C, G, G, G, A, C, T, T, A, C, G, T, C, A, A, A, G, A, A],
       [T, C, A, A, G, T, G, A, A, A, T, T, G, A, T, C, A, C, A, T, A, A],
       [T, A, A, T, T, T, A, T, T, C, C, A, T, G, T, C, A, C, A, C, T, T],
       [T, T, T, T, C, T, T, A, T, C, T, A, C, C, T, C, A, C, A, A, A, G],
       [T, T, T, T, G, T, G, A, C, G, C, A, G, C, G, C, A, T, A, A, A, T],
       [A, A, A, C, G, T, G, A, T, A, C, T, C, A, T, C, A, C, A, T, C, G],
       [C, T, G, T, T, T, G, A, A, C, T, G, G, A, C, A, A, C, A, A, T, A],
       [T, T, A, T, G, T, G, G, A, T, C, C, A, G, T, C, G, A, T, G, A, T],
       [A, A, A, T, G, A, G, G, T, G, C, T, G, A, A, C, G, C, G, G, T, T],
       [A, A, T, T, G, T, A, T, G, A, T, G, T, A, C, C, A, C, A, T, T, C],
       [A, G, T, G, A, T, A, A, T, G, C, T, T, A, T, C, A, A, A, A, T, T],
       [T, A, C, T, G, C, A, A, C, C, A, T, C, T, A, C, A, A, A, T, A, A],
       [T, T, T, T, G, C, G, A, A, G, G, G, G, A, T, T, G, C, A, A, A, T],
       [A, A, A, A, G, T, G, G, G, G, T, T, T, T, T, C, A, G, A, C, C, A],
       [T, G, T, T, G, T, T, G, A, C, C, A, T, A, T, C, G, C, A, C, A, A],
       [T, A, A, T, G, T, C, A, T, C, C, T, G, G, T, C, A, C, G, A, T, G],
       [A, T, T, G, T, G, T, A, C, A, A, A, T, G, T, A, C, A, C, A, A, C],
       [T, T, G, T, G, T, A, C, A, T, T, T, G, T, A, C, A, C, A, A, T, T],
       [A, G, A, T, A, T, G, A, T, C, T, A, T, A, T, C, A, A, T, T, T, C],
       [T, T, G, T, G, T, G, A, T, G, C, A, A, G, C, C, A, C, A, T, T, T],
       [A, A, T, T, T, T, T, A, T, T, G, A, C, A, G, A, A, C, T, T, A, T],
       [A, A, T, C, T, T, T, A, T, C, T, T, T, G, T, A, G, C, A, C, T, T],
       [A, A, T, T, T, T, A, C, T, T, T, T, G, G, T, T, A, C, A, T, A, T],
       [A, A, A, T, A, T, G, A, C, G, G, T, G, T, T, C, A, C, A, A, A, G],
       [T, G, G, T, G, T, G, A, T, C, G, G, G, G, T, T, C, A, A, T, A, A],
       [A, A, A, G, G, T, T, A, T, T, T, A, T, G, A, C, T, C, A, A, C, A],
       [A, T, G, C, C, T, G, A, C, G, G, A, G, T, T, C, A, C, A, C, T, T],
       [T, A, A, C, C, T, G, A, C, G, T, A, A, T, T, C, A, T, A, A, C, A],
       [A, A, A, T, G, T, G, A, G, A, G, A, G, T, G, C, A, A, C, C, T, G],
       [A, A, T, A, G, T, G, T, C, G, C, T, G, A, G, C, A, C, T, A, A, A],
       [T, A, A, T, G, T, A, A, A, T, G, G, T, G, T, G, T, T, A, A, A, T],
       [A, A, G, T, G, T, G, A, T, C, T, A, C, G, T, C, A, C, T, C, A, T],
       [A, A, A, T, G, T, G, T, G, C, T, C, G, A, T, C, T, C, A, T, T, C],
       [A, G, G, T, G, T, G, C, G, A, T, C, A, A, T, A, A, A, A, A, A, A],
       [T, T, T, A, G, T, T, A, C, A, T, G, T, T, T, A, A, C, A, C, T, T],
       [T, T, A, T, T, A, G, T, A, A, G, T, T, A, T, C, A, C, C, A, T, T],
       [T, A, T, T, G, T, G, A, C, A, T, A, T, G, T, T, T, T, G, T, C, A],
       [A, A, A, C, G, T, G, A, T, A, G, C, C, G, T, C, A, A, A, C, A, A],
       [T, A, T, T, T, T, A, C, T, C, T, G, T, G, T, A, A, T, A, A, A, T],
       [T, T, G, T, T, T, G, A, T, A, T, T, T, A, T, C, A, T, A, T, T, A],
       [A, G, A, T, G, T, G, A, G, C, C, A, G, C, T, C, A, C, C, A, T, A],
       [A, G, A, T, G, T, G, A, T, T, A, G, A, T, T, A, T, T, A, T, T, C],
       [A, A, T, T, G, T, G, A, T, C, A, C, G, C, C, C, G, C, A, C, A, T],
       [A, A, A, T, T, T, G, A, T, T, T, G, G, A, T, C, A, C, G, T, A, A],
       [A, A, C, T, G, T, G, A, G, C, C, A, A, A, G, C, G, T, T, G, T, T],
       [A, A, T, T, T, G, G, G, T, T, G, T, T, A, T, C, A, A, A, T, C, G],
       [T, T, A, T, T, T, G, C, G, T, C, A, G, C, T, C, A, C, A, A, A, T],
       [T, A, T, A, T, T, G, A, T, A, C, T, T, A, A, A, A, C, A, T, T, T],
       [T, T, C, T, T, T, A, A, G, G, C, G, A, A, A, C, A, A, A, T, A, A],
       [A, T, T, T, G, T, A, C, T, A, T, C, G, G, T, C, A, C, A, G, T, T],
       [A, T, T, T, G, C, G, G, A, G, C, T, T, G, T, C, A, C, A, G, C, T],
       [G, G, G, T, G, C, G, A, A, A, T, C, C, G, T, C, A, C, A, G, T, T],
       [T, T, T, T, A, T, G, A, A, G, C, C, C, T, T, C, A, C, A, G, A, A],
       [A, A, A, C, A, C, G, A, T, C, C, C, G, C, T, C, G, C, A, T, T, T],
       [G, G, A, T, G, T, G, A, A, A, T, T, A, A, T, C, A, C, A, G, T, A],
       [C, A, T, T, G, T, G, A, A, G, C, A, G, C, A, A, A, A, A, T, A, T],
       [A, A, T, T, T, C, T, A, A, C, C, A, G, C, G, C, A, A, A, A, T, A],
       [A, T, T, C, T, T, G, G, A, C, T, G, G, A, C, C, A, T, A, A, A, A],
       [T, T, A, A, G, T, C, A, A, A, T, T, A, A, C, C, A, C, A, C, T, T],
       [T, A, A, A, G, C, T, A, A, G, C, A, G, C, T, C, A, C, A, T, T, A],
       [T, T, T, T, G, T, T, A, T, T, T, A, A, A, C, A, C, G, A, G, T, C],
       [C, A, T, T, A, G, G, A, T, T, T, T, G, T, T, A, T, T, T, A, A, A],
       [A, A, C, T, G, T, G, G, T, T, G, C, C, A, T, C, A, C, A, G, A, T],
       [A, A, C, C, A, T, G, A, T, C, C, G, C, G, C, C, A, C, A, C, T, T],
       [A, A, A, C, G, T, G, G, C, A, T, C, G, G, T, C, A, A, T, T, C, A],
       [T, A, A, T, G, T, G, A, A, A, A, G, T, A, C, C, A, G, C, G, A, T],
       [A, T, A, T, G, T, G, A, A, C, A, A, T, G, C, C, A, T, C, A, A, T],
       [A, A, G, A, T, T, G, A, A, A, A, G, T, C, T, T, A, A, A, C, A, T],
       [A, T, G, T, T, T, G, A, A, A, A, T, T, A, T, T, A, T, A, T, T, G],
       [A, A, A, T, G, T, G, C, T, G, T, T, A, A, T, C, A, C, A, T, G, C],
       [A, T, A, T, A, T, T, A, A, T, A, A, T, C, T, C, A, A, A, T, A, A],
       [T, T, A, T, T, T, T, A, A, C, G, G, A, G, T, A, A, C, A, T, T, T],
       [G, T, G, A, G, A, G, A, A, C, A, A, T, G, T, C, A, A, A, C, A, A],
       [A, A, G, T, A, T, T, A, T, G, C, G, C, A, G, C, A, C, A, G, C, C],
       [T, A, A, T, G, C, G, A, T, C, T, A, T, A, T, C, A, C, G, C, T, G],
       [A, A, A, C, G, T, T, T, T, A, T, C, T, G, T, C, A, C, A, T, A, A],
       [T, A, G, T, G, A, G, G, C, A, T, A, A, A, T, C, A, C, A, T, T, A],
       [C, A, G, C, G, T, G, A, T, G, T, T, A, T, C, A, A, C, A, G, T, A],
       [T, T, T, T, G, T, T, G, T, A, T, G, A, T, T, G, A, A, A, T, T, A],
       [T, T, C, T, G, C, G, A, G, A, T, T, T, C, T, C, A, C, A, A, A, G],
       [A, A, T, T, G, C, G, A, A, T, C, G, A, A, T, C, A, A, T, G, T, G],
       [T, G, C, T, G, T, A, A, A, T, C, C, G, C, T, C, G, C, A, G, T, A],
       [A, A, A, T, G, T, G, A, A, G, A, G, G, G, T, C, A, T, A, A, C, C],
       [T, T, T, A, T, T, C, A, A, C, C, G, G, A, T, C, G, C, G, T, A, T],
       [A, A, T, T, G, T, G, A, T, C, A, T, T, G, A, C, G, A, A, A, T, T],
       [T, T, T, C, T, T, G, C, T, T, A, C, C, G, T, C, A, C, A, T, T, C],
       [T, A, A, T, G, T, G, A, G, C, A, C, G, A, T, T, A, A, A, G, T, G],
       [A, A, A, T, G, T, G, A, T, T, T, T, C, A, T, C, A, C, G, A, T, T],
       [A, A, T, A, G, T, G, A, C, G, C, G, C, T, T, C, G, C, A, A, C, C],
       [G, A, A, T, G, T, G, A, C, A, A, G, G, A, T, A, T, T, T, T, A, C],
       [A, T, T, A, C, G, G, A, T, C, T, T, C, A, T, C, A, C, A, T, A, A],
       [T, T, G, T, G, T, G, A, T, C, T, G, C, A, T, C, A, C, G, C, A, T],
       [C, G, A, T, G, T, G, A, T, A, T, T, G, C, T, C, T, C, C, T, A, T],
       [A, A, T, G, A, T, G, A, A, A, A, A, A, C, T, C, G, C, A, A, T, T],
       [A, A, A, T, A, A, T, A, G, T, T, A, G, A, T, C, A, A, A, T, T, T],
       [C, T, A, T, T, A, G, A, C, A, A, A, G, A, T, T, T, C, A, T, T, A],
       [A, A, A, T, G, T, G, T, T, G, A, A, C, T, C, C, A, C, A, A, T, A],
       [T, T, A, A, G, T, T, A, T, T, G, C, A, C, T, C, A, G, A, A, T, A],
       [A, T, T, T, T, T, G, A, T, A, G, T, G, G, T, A, A, T, T, T, T, A],
       [A, A, A, T, G, T, G, A, C, T, T, T, T, A, T, C, A, C, A, T, A, A],
       [T, G, G, T, G, T, G, A, T, C, A, G, G, C, G, C, A, C, A, T, T, A],
       [A, T, A, T, G, T, T, A, T, G, A, G, T, T, G, A, G, C, G, G, A, A],
       [C, T, A, T, T, T, A, A, T, A, T, A, A, T, T, C, A, T, A, A, T, T],
       [G, T, T, T, C, T, A, A, T, C, T, A, T, T, T, A, A, T, A, T, A, A],
       [T, T, A, T, C, C, A, A, A, A, A, A, A, A, G, C, A, C, A, T, T, T],
       [A, T, G, A, G, C, G, C, T, T, T, T, A, A, T, C, T, C, A, T, T, A],
       [T, T, A, T, T, T, G, A, A, C, A, A, T, G, G, C, G, C, G, G, A, A],
       [G, A, G, T, G, C, G, A, G, T, C, T, G, C, T, C, G, C, A, T, A, A],
       [T, T, T, T, G, T, T, A, C, T, T, A, C, A, C, A, A, C, A, A, T, T],
       [A, A, T, C, G, C, A, A, C, T, T, T, G, A, T, C, G, A, A, T, T, T],
       [T, A, T, T, A, T, A, A, T, C, C, T, A, T, T, C, A, A, T, T, A, T],
       [T, T, T, T, G, T, T, T, T, C, T, G, C, T, C, T, A, C, A, C, T, A],
       [T, T, T, T, G, T, G, A, T, C, G, T, T, A, T, C, T, C, G, A, T, A],
       [A, T, T, T, G, C, G, A, T, G, C, G, T, C, G, C, G, C, A, T, T, T],
       [T, A, A, T, G, A, G, A, T, T, C, A, G, A, T, C, A, C, A, T, A, T],
       [T, T, A, T, G, T, G, A, T, G, A, A, G, T, T, A, C, C, G, T, A, T],
       [A, T, C, T, G, T, G, A, G, T, G, A, T, T, T, C, A, C, A, G, T, A],
       [T, G, C, T, G, T, G, A, C, T, C, G, A, T, T, C, A, C, G, A, A, G],
       [A, G, A, T, G, T, G, A, G, C, G, A, T, A, A, C, C, C, A, T, T, T],
       [A, A, T, T, G, T, T, A, T, C, G, T, T, T, G, C, A, T, T, A, T, C],
       [A, T, G, C, G, T, T, A, A, A, T, C, A, T, T, C, T, C, G, T, T, A],
       [G, A, T, T, T, C, G, A, T, T, T, A, T, G, C, C, A, C, A, A, A, T],
       [A, A, C, A, G, T, T, A, T, T, T, T, T, A, A, C, A, A, A, T, T, T],
       [A, T, G, T, G, T, G, C, G, G, C, A, A, T, T, C, A, C, A, T, T, T],
       [A, A, T, G, A, C, G, C, A, T, G, A, A, A, T, C, A, C, G, T, T, T],
       [G, A, A, T, A, T, G, C, G, C, G, A, A, A, T, C, A, A, A, C, A, A],
       [A, A, A, A, G, A, G, A, A, C, T, A, C, C, C, C, A, C, C, T, C, A],
       [A, A, A, A, G, A, G, A, T, T, A, C, T, G, T, C, A, C, T, T, T, C],
       [G, T, C, T, T, T, G, T, C, G, A, A, A, A, T, C, G, C, G, T, T, A],
       [A, G, T, T, G, T, G, A, A, T, T, T, G, C, A, C, A, A, A, T, T, T],
       [G, T, G, C, A, T, G, A, T, G, T, T, A, A, T, C, A, T, A, A, A, T],
       [T, T, T, T, T, T, T, A, G, C, C, A, C, G, T, A, T, C, A, A, T, T],
       [C, C, T, G, T, T, A, C, A, G, C, A, C, G, T, A, A, C, A, T, A, G],
       [A, A, T, T, G, A, G, A, T, A, T, G, G, T, T, C, A, C, T, T, T, A],
       [T, G, G, A, G, T, G, A, T, T, T, A, C, A, T, C, T, A, A, A, A, A],
       [A, A, A, T, G, T, A, T, G, A, C, A, G, A, T, C, A, C, T, A, T, T],
       [T, A, G, T, G, T, G, T, G, T, C, A, G, A, T, C, T, C, G, T, T, T],
       [A, G, T, A, G, T, T, A, T, T, C, A, T, G, T, C, A, C, G, G, T, T],
       [C, T, A, A, G, T, G, A, A, G, C, G, C, A, T, C, A, G, G, C, A, A],
       [T, A, T, G, G, T, T, T, C, A, T, C, A, T, T, C, A, C, A, T, C, T],
       [T, T, T, T, G, T, G, G, C, C, T, G, C, T, T, C, A, A, A, C, T, T],
       [T, T, T, T, A, T, G, A, T, T, T, G, G, T, T, C, A, A, T, T, C, T],
       [A, T, T, A, G, T, G, A, G, C, T, G, A, T, C, C, G, C, A, G, C, A],
       [A, A, C, G, G, T, G, A, T, T, G, C, C, A, T, T, A, C, T, T, C, T],
       [T, T, T, T, G, T, G, A, T, G, C, A, G, A, T, C, G, C, T, T, T, T],
       [A, A, C, T, G, T, G, A, A, G, G, A, G, G, A, C, G, C, C, A, T, G],
       [C, A, A, T, G, A, A, A, C, T, G, A, G, T, T, C, A, A, A, C, T, T],
       [T, T, T, T, G, T, G, A, T, C, T, G, C, G, T, C, A, A, T, A, T, T],
       [C, T, T, A, G, T, G, A, T, C, T, A, C, C, T, C, A, C, C, T, T, T],
       [A, A, G, T, G, T, G, A, A, T, T, A, A, C, G, C, A, C, T, C, A, T],
       [T, C, T, C, G, T, G, A, T, C, A, A, G, A, T, C, A, C, A, T, T, C],
       [G, A, A, T, T, T, G, A, T, C, T, C, G, C, T, C, A, C, A, T, G, T],
       [G, A, C, A, G, T, G, A, A, A, T, T, T, G, T, C, A, T, G, C, A, A],
       [A, T, T, T, C, T, G, A, T, G, A, T, T, A, G, C, A, T, T, C, C, C],
       [T, T, T, A, T, T, G, A, T, T, T, A, A, A, T, C, A, A, A, G, A, T],
       [G, A, A, T, G, T, G, A, A, A, A, C, T, G, G, C, A, C, G, C, T, C],
       [A, A, G, T, G, T, G, A, T, T, A, C, A, A, T, C, G, C, T, G, G, C],
       [T, T, T, G, T, T, G, C, T, T, T, T, G, A, T, C, A, C, A, A, T, A],
       [C, T, G, C, T, T, G, A, G, C, C, G, C, A, G, C, A, C, A, A, T, G],
       [T, T, T, T, G, C, G, A, T, C, A, A, A, A, T, A, A, C, A, C, T, T],
       [T, A, G, A, G, T, A, A, A, A, A, C, A, A, T, C, A, G, A, T, A, A],
       [A, T, T, T, G, T, G, A, A, A, C, C, G, G, T, C, A, C, C, T, G, A],
       [T, T, A, T, G, T, G, A, A, T, C, A, G, A, T, C, A, C, C, A, T, A],
       [T, T, A, T, A, T, T, C, A, C, A, A, T, A, T, C, A, A, A, C, A, A],
       [A, A, C, A, G, C, A, A, T, A, C, G, G, T, G, C, A, C, A, A, A, A],
       [T, A, T, C, A, T, G, A, G, C, G, A, T, T, T, C, G, C, A, A, A, A],
       [A, A, C, T, G, C, G, A, C, C, A, C, G, G, T, C, A, C, A, G, C, G],
       [G, T, T, G, T, G, A, T, C, A, A, G, C, C, T, G, C, A, C, A, A, A],
       [A, G, T, T, G, T, G, A, T, C, A, A, G, C, C, T, G, C, A, C, A, A],
       [A, T, T, T, A, T, G, A, G, C, A, G, C, A, T, C, G, A, A, A, A, A],
       [A, A, C, T, G, G, A, A, C, G, C, T, T, T, T, C, G, C, A, T, T, C],
       [A, T, T, T, G, A, G, A, T, C, A, A, G, A, T, C, A, C, T, G, A, T],
       [T, A, G, T, G, T, G, A, A, A, G, G, A, A, C, A, A, C, A, T, T, A],
       [T, T, A, G, T, T, G, A, A, C, C, A, G, G, T, C, A, C, A, A, A, A],
       [T, A, A, A, G, T, G, A, T, G, G, T, A, G, T, C, A, C, A, T, A, A],
       [A, A, G, T, G, T, G, A, C, C, G, C, C, G, T, C, A, T, A, T, T, A],
       [G, A, A, T, G, T, A, A, G, C, G, T, T, T, A, C, C, C, A, C, T, A],
       [A, A, T, T, G, G, A, A, T, A, T, C, C, A, T, C, A, C, A, T, A, A],
       [A, T, T, C, T, T, G, A, T, A, C, A, A, G, T, A, T, C, A, A, A, A],
       [T, T, C, T, T, G, A, T, A, C, A, A, G, T, A, T, C, A, A, A, A, A],
       [T, T, A, T, G, C, G, A, A, C, C, A, G, A, G, C, A, A, T, A, T, C],
       [A, A, A, A, A, T, T, C, T, C, T, T, C, A, T, T, A, A, A, T, T, T],
       [T, A, A, A, A, A, A, A, T, T, C, T, C, T, T, C, A, T, T, A, A, A],
       [A, T, C, T, G, T, G, A, T, C, T, A, T, T, T, G, G, C, A, A, A, A],
       [A, A, G, T, G, T, G, A, T, G, T, G, A, G, T, C, A, G, A, T, A, A],
       [T, T, A, T, G, T, A, A, T, A, T, G, C, A, T, C, A, C, G, A, T, A],
       [A, G, T, C, G, T, T, A, A, C, T, G, T, T, T, T, A, C, A, C, T, T],
       [G, A, A, T, G, A, G, A, C, A, C, G, A, T, T, C, A, A, A, A, A, A],
       [T, G, A, T, G, T, G, A, T, T, T, G, C, T, T, C, A, C, A, T, C, T],
       [T, T, T, T, G, T, T, A, C, C, T, G, C, C, T, C, T, A, A, C, T, T],
       [A, A, A, T, G, T, T, A, T, C, C, A, C, A, T, C, A, C, A, A, T, T],
       [T, T, A, T, T, T, G, C, C, A, C, A, G, G, T, A, A, C, A, A, A, A],
       [C, G, A, T, G, T, G, A, G, G, A, A, A, T, T, A, A, C, A, T, G, A],
       [A, A, T, G, T, T, A, A, A, T, T, G, A, T, G, T, A, A, C, A, T, A],
       [A, T, G, T, T, A, A, A, T, T, G, A, T, G, T, A, A, C, A, T, A, A],
       [T, T, T, T, G, C, G, A, T, T, G, A, G, G, C, A, A, A, A, T, A, T],
       [T, A, T, C, A, T, G, A, T, A, T, C, G, A, T, A, A, C, C, A, T, A],
       [A, T, A, C, G, T, G, A, T, G, T, A, C, T, C, A, G, C, A, A, C, A],
       [A, A, C, G, T, C, G, C, T, G, A, A, A, T, T, C, A, C, A, T, T, T],
       [A, A, G, T, G, T, G, A, T, C, G, G, G, G, A, C, A, A, T, A, T, A],
       [A, T, A, T, A, T, G, A, T, T, T, T, A, T, T, C, G, C, C, G, A, C],
       [A, A, T, T, G, C, G, A, T, C, T, A, A, A, T, C, A, A, A, T, T, A],
       [A, A, A, T, A, T, G, A, C, C, T, C, T, C, T, T, T, A, A, A, A, T],
       [T, T, T, A, T, T, G, A, T, C, T, A, A, C, T, C, A, C, G, A, A, A],
       [A, T, T, T, G, T, G, A, T, G, G, C, T, C, T, C, A, C, C, T, T, T],
       [A, T, G, T, T, T, G, A, T, T, C, G, A, C, T, T, T, A, A, A, T, C],
       [T, T, T, C, T, T, G, A, T, T, T, A, C, C, T, G, A, A, A, T, T, T],
       [A, T, T, T, G, T, G, A, G, T, G, G, T, C, G, C, A, C, A, T, A, T],
       [T, T, T, T, G, T, G, T, T, G, A, G, G, A, T, C, A, C, A, A, A, A],
       [T, T, T, T, G, T, G, A, A, T, C, A, G, A, T, C, A, G, A, A, A, A],
       [T, A, T, A, G, T, G, A, T, C, C, A, C, G, C, C, A, C, A, T, T, T],
       [A, A, T, T, T, T, G, C, G, C, T, A, A, A, G, C, A, C, A, T, T, T],
       [T, T, T, A, G, T, G, A, A, G, C, A, G, A, T, C, G, C, A, T, T, A],
       [A, A, A, C, T, T, G, C, G, T, G, A, C, T, A, C, A, C, A, T, T, C],
       [C, A, A, T, T, T, G, A, T, A, A, C, A, A, T, T, A, A, T, T, T, A],
       [T, A, A, T, G, T, T, G, T, A, T, C, A, A, C, C, A, C, C, A, T, A],
       [A, A, G, T, G, C, G, A, G, C, A, A, G, C, T, C, A, C, A, A, A, A],
       [A, A, T, T, G, A, G, A, A, C, T, T, A, C, T, C, A, A, A, T, T, T],
       [T, T, C, T, T, T, G, A, T, C, C, A, T, C, T, C, A, G, A, G, G, A],
       [C, T, T, T, T, T, T, A, T, A, G, G, T, G, T, C, A, C, A, A, A, G],
       [G, A, A, G, T, T, G, A, C, C, C, C, G, A, T, C, T, C, A, T, T, A],
       [A, T, A, T, A, T, T, A, T, T, T, A, T, T, T, A, A, C, G, A, T, T],
       [T, T, G, C, A, G, T, T, T, T, T, A, C, G, T, C, A, C, A, A, G, G],
       [C, A, G, C, A, T, G, A, C, C, C, A, G, G, T, C, G, C, C, T, T, C],
       [G, T, A, T, G, C, A, A, A, G, G, A, C, G, T, C, A, C, A, T, T, A],
       [A, G, A, G, G, T, G, A, T, T, T, T, G, A, T, C, A, C, G, G, A, A],
       [A, A, C, A, T, T, T, A, A, A, C, A, G, A, T, C, A, C, A, A, A, A],
       [C, T, T, T, G, T, G, A, T, G, T, G, C, T, T, C, C, T, G, T, T, A],
       [G, A, A, T, T, T, G, A, T, T, T, A, C, A, T, C, A, A, T, A, A, G],
       [T, T, T, T, G, T, G, A, T, C, T, T, C, C, T, C, C, A, C, A, T, T],
       [T, G, T, T, G, T, T, A, T, A, T, T, C, A, T, C, A, T, G, C, A, T],
       [A, A, A, A, G, C, G, G, G, C, G, G, C, A, T, C, A, A, A, C, A, A],
       [A, A, A, T, G, T, G, A, A, G, T, G, C, C, T, C, G, C, C, G, T, T],
       [T, T, C, T, G, T, T, G, A, T, A, T, G, A, T, C, A, C, G, T, T, A],
       [A, A, C, C, T, T, G, A, G, C, C, A, C, A, T, C, A, A, C, A, T, T],
       [T, G, C, T, G, C, A, A, C, A, G, G, C, A, C, C, T, G, A, T, A, A],
       [T, A, A, T, A, T, G, A, C, C, A, A, C, C, T, C, T, C, A, T, A, A],
       [A, G, A, T, G, T, T, A, C, C, C, G, T, A, T, C, A, T, T, C, A, C],
       [A, A, T, T, G, T, G, A, C, A, C, A, G, T, G, C, A, A, A, T, T, C],
       [T, A, G, A, G, T, G, A, T, A, T, G, T, A, T, A, A, C, A, T, T, A],
       [A, A, A, T, T, T, G, A, A, G, T, A, G, C, T, C, A, C, A, C, T, T],
       [C, C, T, T, G, T, C, A, T, C, T, T, T, C, T, G, A, C, A, C, C, T],
       [A, T, T, T, G, T, T, A, A, C, A, C, A, T, A, A, A, A, A, C, A, A],
       [A, C, T, T, G, T, G, G, A, T, A, A, A, A, T, C, A, C, G, G, T, C],
       [A, T, T, T, C, A, T, C, T, C, T, A, T, G, T, C, A, C, A, T, T, T],
       [A, A, C, A, T, T, T, A, A, C, A, C, C, A, T, C, A, T, A, T, T, T],
       [A, A, A, A, T, T, A, A, C, T, G, A, G, T, T, C, A, C, C, T, A, A],
       [A, A, T, A, A, T, G, A, A, A, A, G, G, A, T, G, A, C, A, T, A, T],
       [T, T, T, T, G, T, T, A, T, T, T, A, A, A, T, T, A, A, G, C, C, T],
       [G, C, T, T, A, G, G, A, T, T, T, T, G, T, T, A, T, T, T, A, A, A],
       [T, T, G, T, G, C, G, A, G, C, C, A, G, C, T, C, A, A, A, C, T, T],
       [A, A, A, T, C, T, G, A, T, A, A, G, T, T, T, T, A, A, T, T, T, C],
       [A, T, G, C, G, T, G, G, C, T, T, A, A, T, G, C, A, C, A, T, C, A],
       [T, G, T, A, G, T, G, A, T, A, A, A, A, C, T, C, A, G, A, T, T, A],
       [T, T, G, C, G, A, G, C, G, A, G, C, G, C, A, C, A, C, T, T, G, T],
       [T, T, T, T, G, C, G, A, G, C, G, A, G, C, G, C, A, C, A, C, T, T],
       [A, T, T, T, G, A, G, A, T, T, C, A, A, C, T, C, T, C, A, A, A, T],
       [G, A, T, C, G, T, G, A, A, C, T, A, C, G, G, C, A, C, A, C, T, T],
       [G, C, C, T, G, G, G, A, T, G, A, A, A, G, T, G, A, C, A, T, T, T],
       [A, T, T, C, G, T, G, A, T, A, G, C, T, G, T, C, G, T, A, A, A, G],
       [T, G, A, T, G, T, G, A, T, C, T, A, C, A, G, C, A, T, G, T, T, A],
       [C, T, T, T, G, T, G, A, T, C, T, G, A, A, T, C, A, C, A, A, G, A],
       [A, A, A, T, G, T, G, A, G, T, A, G, T, G, T, C, A, C, A, T, T, T],
       [T, T, T, T, G, T, G, A, T, G, A, A, C, G, T, C, A, C, G, T, C, A],
       [T, T, A, T, G, T, G, A, T, T, G, A, T, A, T, C, A, C, A, C, A, A],
       [A, T, A, T, A, T, T, A, T, T, G, G, G, G, G, C, G, C, A, A, T, T],
       [A, A, G, C, G, T, G, A, T, G, C, A, T, C, T, C, A, C, C, T, T, T],
       [A, A, A, C, G, T, G, A, T, C, A, A, C, C, C, C, T, C, A, A, T, T],
       [A, T, T, C, G, T, G, A, T, C, G, C, T, T, T, C, A, T, G, C, T, T],
       [A, T, G, T, G, C, G, C, T, A, T, A, A, G, G, C, A, A, A, T, C, T],
       [A, A, G, G, T, T, A, A, A, G, G, A, A, A, T, C, A, C, A, T, G, A],
       [A, A, A, C, G, C, G, A, A, C, G, T, C, A, T, C, A, C, G, C, T, G],
       [T, T, T, T, G, T, G, A, T, C, T, A, A, A, T, T, G, T, A, G, T, A],
       [G, A, T, T, G, T, G, A, T, T, C, G, A, T, T, C, A, C, A, T, T, T],
       [A, A, C, T, G, C, G, A, G, C, A, T, G, G, T, C, A, T, A, T, T, T],
       [C, G, T, T, T, C, G, A, G, G, T, T, G, A, T, C, A, C, A, T, T, T],
       [T, T, T, T, G, C, A, A, C, C, G, T, A, A, T, C, A, C, A, C, T, T],
       [T, A, A, T, G, T, G, C, C, A, T, A, A, A, A, C, A, A, G, C, A, A],
       [T, T, C, T, A, C, C, A, C, A, C, T, A, T, G, A, G, C, A, A, A, A],
       [A, G, G, T, G, T, T, A, A, A, T, T, G, A, T, C, A, C, G, T, T, T],
       [A, A, A, A, G, T, G, A, T, G, C, A, A, A, T, C, A, C, A, T, A, A],
       [C, A, T, G, G, T, G, A, T, G, A, G, T, A, T, C, A, C, G, A, A, A],
       [A, G, A, A, G, T, G, A, T, T, C, A, T, A, C, C, A, C, G, A, C, T],
       [A, T, T, T, C, T, A, A, T, A, G, C, C, A, T, C, A, C, A, A, A, A],
       [G, A, T, G, G, T, G, C, G, C, A, T, G, A, T, A, A, C, G, C, C, T],
       [C, T, C, C, G, T, G, A, A, A, G, C, G, A, T, C, A, C, A, A, A, G],
       [A, A, A, A, T, T, G, A, C, A, G, C, C, G, T, C, A, C, T, T, T, T],
       [A, A, A, T, G, T, G, A, C, A, A, A, T, A, T, C, A, C, A, G, G, T],
       [A, A, T, T, G, T, G, A, A, C, A, T, C, A, T, C, A, C, G, T, T, C],
       [C, G, G, T, G, A, G, C, A, T, C, A, C, A, T, C, A, C, C, A, C, A],
       [A, A, A, T, G, C, G, G, T, G, A, G, C, A, T, C, A, C, A, T, C, A],
       [T, T, T, C, C, T, G, A, A, A, A, T, T, C, A, C, G, C, T, G, T, A],
       [A, G, A, T, G, T, G, A, A, G, C, A, A, A, T, C, A, C, C, C, A, C],
       [T, T, T, T, G, T, G, A, T, C, A, A, T, T, T, C, A, A, A, A, T, A],
       [T, G, A, T, G, T, G, G, T, T, T, T, G, A, T, C, A, C, T, T, T, T],
       [T, T, A, A, G, T, T, C, G, A, T, A, T, T, T, C, T, C, G, T, T, T],
       [T, T, T, T, A, T, G, A, C, G, A, G, G, C, A, C, A, C, A, C, A, T],
       [A, A, A, T, T, C, A, A, T, A, T, T, C, A, T, C, A, C, A, C, T, T],
       [A, A, A, C, G, T, G, A, T, T, T, A, A, C, G, C, C, T, G, A, T, T],
       [A, A, C, C, A, T, G, A, A, A, C, G, G, A, A, C, A, C, G, A, A, A],
       [A, A, T, T, G, T, T, T, T, T, G, A, T, T, T, T, G, C, A, T, T, T],
       [A, T, G, T, T, T, G, A, C, C, T, G, G, C, A, A, A, C, G, C, C, T],
       [T, G, A, C, G, C, G, G, A, C, T, G, A, T, T, C, A, C, A, A, A, T],
       [A, A, T, A, T, A, G, A, T, C, T, C, C, G, T, C, A, C, A, T, T, T],
       [T, T, C, T, G, T, A, A, C, A, G, A, G, A, T, C, A, C, A, C, A, A],
       [T, T, A, T, G, T, G, C, G, C, A, T, C, T, C, C, A, C, A, T, T, A],
       [T, T, T, C, G, T, G, A, T, G, T, T, G, C, T, T, G, C, A, A, A, A],
       [G, A, C, C, T, C, G, G, T, T, T, A, G, T, T, C, A, C, A, G, A, A],
       [A, T, T, T, G, C, T, G, G, C, T, G, G, G, G, A, A, C, A, C, A, T],
       [A, A, A, A, G, T, G, A, A, C, G, T, A, C, T, C, T, C, A, T, T, C],
       [T, T, G, C, G, T, G, A, T, C, T, G, T, C, G, C, C, C, A, A, A, T],
       [T, T, T, G, T, T, G, C, T, G, A, C, C, T, T, C, A, A, A, A, A, T],
       [T, T, T, T, G, T, G, A, A, G, T, C, G, C, C, A, G, C, A, T, C, T],
       [A, A, A, T, T, T, T, A, A, G, C, C, A, C, T, C, G, C, C, A, T, T],
       [T, T, A, A, T, T, C, A, T, T, A, A, C, A, T, C, A, C, A, A, A, T],
       [A, T, G, T, G, T, G, A, A, G, T, T, G, A, T, C, A, C, A, A, A, T],
       [G, A, T, T, G, T, A, C, A, T, T, C, C, T, T, A, A, C, C, G, G, A],
       [A, A, C, C, G, T, G, C, T, C, C, C, A, C, T, C, G, C, A, G, T, C],
       [A, G, A, T, T, T, A, C, T, G, C, T, G, C, T, T, C, A, C, G, C, A],
       [T, T, T, A, C, T, G, C, T, G, C, T, T, C, A, C, G, C, A, G, G, A],
       [C, A, C, T, G, T, G, A, G, G, T, A, T, T, T, G, C, T, A, A, A, G],
       [C, T, T, C, G, T, G, A, A, C, G, A, T, C, C, C, A, C, G, A, A, T],
       [T, A, A, A, G, T, G, A, T, C, C, A, G, A, T, T, A, C, G, G, T, A],
       [A, T, T, T, G, T, G, A, A, A, T, A, G, A, T, C, A, C, C, G, C, T],
       [A, T, A, T, T, T, G, A, T, A, T, C, A, T, C, C, A, G, G, T, A, T],
       [G, T, T, T, G, T, G, A, T, T, T, T, C, A, A, A, A, C, G, C, A, T],
       [A, T, T, T, G, C, G, A, A, C, G, T, C, T, T, C, A, C, C, A, T, C],
       [A, A, T, C, G, C, G, T, A, C, C, A, G, G, T, A, A, C, A, A, T, T],
       [A, T, T, T, G, C, G, G, G, T, C, G, C, G, T, C, A, C, A, T, T, T],
       [A, A, A, T, G, A, T, G, A, C, A, C, T, A, T, C, A, C, A, G, T, T],
       [A, A, G, T, G, C, G, A, G, T, A, C, T, G, C, A, A, C, A, T, A, T],
       [A, A, G, T, G, T, G, A, T, G, T, A, A, C, G, C, A, A, T, C, T, G],
       [T, T, T, G, C, T, G, G, C, G, C, G, A, T, T, C, A, C, C, T, G, A],
       [A, A, A, T, G, A, G, C, G, G, C, A, G, A, T, T, A, A, A, A, A, A],
       [A, A, A, T, G, T, C, A, T, C, T, G, C, C, A, T, G, G, G, G, C, T],
       [A, A, A, A, T, G, T, C, A, T, C, T, G, C, C, A, T, G, G, G, G, C],
       [A, A, T, T, G, T, G, A, T, C, T, T, C, G, C, T, G, C, G, T, T, T],
       [A, T, T, T, G, C, G, G, C, G, C, T, T, T, T, T, T, C, A, C, T, T],
       [T, G, A, C, G, T, G, A, T, C, T, T, C, A, T, C, A, C, A, A, A, T],
       [T, A, A, C, G, T, G, A, T, G, T, G, C, C, T, T, G, T, A, A, T, T],
       [T, A, G, A, G, T, G, A, A, A, T, A, T, G, T, T, A, A, G, A, A, G],
       [A, T, T, T, T, T, G, C, T, G, C, A, G, A, G, C, G, T, A, T, T, G],
       [A, G, A, T, G, T, T, A, A, C, C, G, C, C, G, C, G, C, A, G, A, A],
       [G, A, A, T, G, T, G, A, T, T, A, T, G, T, T, G, G, C, A, T, T, T],
       [T, T, T, T, G, T, G, A, C, A, C, G, A, A, T, T, G, C, A, A, A, T],
       [A, A, T, G, G, T, T, G, A, C, C, A, A, T, T, T, A, C, A, T, A, A],
       [G, G, A, T, G, T, G, A, C, A, T, T, C, A, T, C, G, C, A, A, C, A],
       [A, T, T, G, G, T, T, A, A, C, C, A, C, A, T, C, A, C, A, A, G, A],
       [A, A, C, C, G, C, G, A, G, A, G, A, G, A, T, C, A, A, A, T, A, A],
       [A, G, A, T, G, T, T, A, T, G, G, G, C, C, T, T, A, A, A, T, A, T],
       [T, T, T, T, G, T, G, A, A, A, A, C, A, C, A, C, G, C, A, T, A, A],
       [A, A, T, T, G, T, G, A, T, C, T, A, T, A, T, T, T, A, A, C, A, A],
       [A, T, T, G, T, G, A, T, C, T, A, T, A, T, T, T, A, A, C, A, A, A],
       [A, T, T, T, A, A, C, A, A, A, G, T, G, A, T, G, A, C, A, T, T, T],
       [A, G, T, G, A, T, G, A, C, A, T, T, T, C, T, G, A, C, G, G, C, G],
       [T, A, A, T, G, C, G, A, T, C, T, G, G, T, T, C, A, A, A, T, A, A],
       [A, A, T, T, G, T, G, A, T, G, T, G, T, A, T, C, G, A, A, G, T, G],
       [T, T, C, G, T, T, G, A, C, A, T, A, T, A, T, C, A, A, G, T, T, C],
       [A, A, T, G, C, T, A, G, C, T, T, T, C, G, T, C, A, C, A, T, T, A]]