diff --git a/day_4/input3.txt b/day_4/input3.txt new file mode 100644 index 0000000..ba441b7 --- /dev/null +++ b/day_4/input3.txt @@ -0,0 +1,601 @@ +42,32,13,22,91,2,88,85,53,87,37,33,76,98,89,19,69,9,62,21,38,49,54,81,0,26,79,36,57,18,4,40,31,80,24,64,77,97,70,6,73,23,20,47,45,51,74,25,95,96,58,92,94,11,39,63,65,99,48,83,29,34,44,75,55,17,14,56,8,82,59,52,46,90,5,41,60,67,16,1,15,61,71,66,72,30,28,3,43,27,78,10,86,7,50,35,84,12,93,68 + +90 8 2 34 41 +11 67 74 71 62 +47 42 44 1 17 +21 55 12 91 6 +60 69 75 92 56 + +49 29 60 45 31 +94 51 73 33 67 +21 92 53 95 96 + 2 55 52 8 87 + 4 36 76 83 42 + +23 66 50 84 58 +62 98 81 76 57 +24 2 56 79 6 +55 0 16 64 38 +12 67 5 97 60 + +46 64 5 39 62 +16 82 13 77 52 +18 26 44 0 61 +25 7 43 42 50 +11 85 30 28 76 + +51 28 70 65 78 +62 88 30 36 96 +80 87 4 1 24 +63 22 41 79 34 +18 15 47 26 67 + +48 68 92 67 36 +54 50 71 98 21 +20 91 70 78 76 +87 97 44 3 93 +84 12 39 96 57 + +86 12 38 44 1 +10 87 74 53 66 +14 99 85 48 88 +59 33 76 71 31 +83 39 2 67 35 + +62 67 27 96 8 +81 23 78 33 48 +80 16 0 86 85 +26 54 29 32 89 +88 77 43 18 46 + +87 88 13 49 80 +78 19 81 56 11 +18 55 70 44 48 +31 37 24 95 28 +20 79 89 94 14 + +10 31 52 49 79 + 8 72 61 27 42 +73 4 11 43 91 +37 44 58 19 97 +96 63 90 13 74 + +71 27 87 40 99 +69 29 79 64 67 +85 66 4 28 30 +23 51 16 49 45 +92 12 74 1 75 + +46 52 40 12 44 + 0 73 20 86 1 +85 32 4 42 2 +21 33 56 39 9 +49 69 76 98 22 + +42 81 5 11 2 +57 50 77 8 24 +85 92 15 39 52 +37 70 36 79 67 +34 20 16 93 22 + +49 68 25 4 46 +17 57 77 59 54 +65 83 18 84 63 +36 74 61 22 71 +14 0 26 3 98 + + 1 80 93 66 58 +38 9 18 60 2 +70 46 35 88 11 +95 89 85 29 26 +82 68 25 15 53 + +97 80 28 17 7 +67 46 54 95 98 +38 74 42 57 79 +63 29 36 78 6 +90 60 84 10 14 + +18 88 8 96 0 +66 56 43 47 11 +69 73 14 71 25 +27 63 31 44 94 +75 95 84 74 13 + +92 9 98 17 74 +46 7 2 51 52 +21 60 5 87 15 +86 91 65 69 54 +61 85 1 62 53 + +89 80 4 0 68 +17 87 52 86 48 + 3 34 16 25 35 +13 38 49 66 50 +36 43 65 84 56 + + 9 93 54 92 55 +32 2 39 96 98 +58 72 52 83 97 +12 44 27 24 20 + 0 3 28 56 69 + +66 56 37 36 72 +35 49 40 43 44 +54 21 59 12 65 +74 25 22 80 98 +27 81 69 97 62 + +72 81 27 61 74 +26 50 79 13 53 +49 78 76 70 43 +51 64 99 46 67 +68 59 71 17 41 + +97 22 73 30 98 + 8 54 68 47 23 +70 89 41 52 61 +81 28 58 90 3 +88 40 86 46 43 + +94 6 46 43 59 +41 28 87 31 45 +83 26 66 81 1 +76 86 15 42 8 +67 47 54 4 77 + +96 56 22 67 2 +95 47 90 54 51 +78 79 29 82 48 +61 81 77 6 24 +71 93 98 26 75 + +95 7 77 94 64 +19 79 14 24 5 +50 48 4 71 22 +35 69 89 54 2 + 6 51 8 82 58 + +87 6 85 53 64 +50 43 80 61 15 +69 41 51 76 0 +78 26 37 62 16 +12 33 75 58 52 + +67 18 68 52 42 +37 30 49 31 69 +93 90 76 9 32 +60 84 73 94 17 +21 27 66 43 44 + +89 69 24 14 1 +88 33 50 2 63 +12 34 6 97 53 +28 26 55 8 32 +49 19 17 64 86 + +31 37 81 65 38 +96 18 45 19 58 +35 43 1 49 41 +46 85 92 53 15 + 3 34 8 14 21 + +35 68 61 45 39 +46 99 52 55 15 +74 14 10 62 17 + 8 66 98 89 91 +58 24 44 27 29 + +28 48 52 18 13 +17 35 20 11 49 +93 50 31 95 83 +27 33 79 44 80 + 4 96 23 65 68 + +70 78 31 86 36 +99 38 62 95 27 +52 74 25 80 41 +30 15 47 19 21 +77 23 53 9 7 + + 0 83 11 25 42 +50 64 76 67 72 +75 30 82 15 84 +58 17 87 61 33 +98 74 44 3 93 + + 5 40 78 24 11 +57 17 67 60 25 +37 76 28 56 35 +66 94 2 90 47 +86 10 85 46 45 + +63 12 7 74 14 +21 31 84 51 36 +66 20 25 46 41 +15 3 18 62 45 +35 78 93 2 9 + +90 9 33 63 41 +25 73 35 97 19 +99 96 45 71 22 +84 43 29 14 88 +42 8 1 78 68 + +98 84 38 95 27 +18 32 54 12 96 +56 50 2 45 53 +14 83 59 72 70 +22 41 28 9 78 + +89 94 50 33 73 +31 47 8 35 34 +43 92 95 21 51 +68 13 53 24 38 +80 69 44 87 83 + +32 82 75 73 91 +99 10 22 58 23 +86 9 42 81 40 +71 25 3 78 54 +80 15 83 5 4 + +58 1 3 11 24 +66 51 84 44 25 +37 54 12 27 97 +38 2 39 85 83 +89 91 33 79 59 + +49 22 12 84 60 +34 29 11 92 19 +97 41 88 53 38 +26 37 8 36 67 +91 3 90 52 46 + +77 35 76 56 20 +39 94 37 3 83 +78 81 66 29 4 +82 41 38 0 73 +59 16 88 15 30 + +34 69 74 90 33 + 9 47 71 94 10 +76 50 15 19 32 +49 89 31 21 92 +80 12 13 97 93 + +45 94 35 59 20 +18 46 14 36 30 + 6 78 84 38 99 + 5 4 90 92 63 +34 24 26 75 3 + +80 39 1 93 55 +67 71 30 44 76 +38 13 73 21 8 +11 47 46 69 29 +15 57 95 52 34 + +45 86 88 80 19 + 3 5 55 36 90 +54 85 44 18 39 +57 92 42 25 77 +43 0 12 1 24 + +74 71 83 29 25 +56 12 52 33 64 +68 94 97 14 15 + 7 48 24 80 5 +54 87 35 1 66 + +55 50 73 72 36 +17 80 87 68 90 + 8 33 81 1 51 +67 61 71 54 95 +93 98 27 56 0 + +19 32 63 6 98 +13 38 23 28 8 + 5 31 66 72 39 +99 46 2 64 14 +91 83 35 85 10 + +67 85 49 68 37 + 8 36 31 81 18 +74 61 20 80 50 +34 23 42 52 39 +21 14 22 58 54 + +16 14 69 13 81 +21 96 62 7 5 +95 52 0 67 24 + 6 30 65 66 86 +28 25 85 56 15 + + 4 41 21 86 32 +95 23 63 28 2 + 9 16 37 84 14 +92 22 71 42 5 +46 65 69 81 57 + +45 20 46 44 22 +62 93 78 58 25 +91 38 29 68 24 +21 55 71 43 26 +64 76 84 80 99 + +92 67 43 5 12 + 2 64 46 15 96 +95 75 73 38 30 +10 65 20 39 26 +36 16 25 27 88 + + 9 62 18 58 34 +85 80 36 2 48 +16 60 75 72 51 +39 22 32 61 54 +40 44 23 87 53 + +93 69 56 4 22 +73 51 24 53 19 +83 98 77 94 59 +52 70 15 40 48 +60 89 67 92 85 + +48 72 42 80 22 +99 49 11 77 4 +28 24 1 63 51 +85 93 62 7 78 +35 32 3 21 86 + +36 75 67 79 34 +20 8 71 6 5 +50 61 14 52 81 +26 37 0 80 77 +93 47 86 54 94 + +50 19 68 54 80 +81 12 33 87 24 +28 40 37 30 31 +41 51 15 27 97 +67 70 14 77 86 + +89 57 48 37 27 +44 46 29 63 20 +74 88 25 68 76 +18 28 91 59 58 +99 77 62 64 83 + +22 5 86 37 42 +47 69 87 34 89 +64 33 18 56 51 +30 49 11 79 17 +61 80 0 29 57 + + 7 82 87 15 83 +76 43 92 1 97 + 0 46 2 86 6 +48 27 29 61 67 +53 10 64 93 77 + +65 16 23 26 87 +58 5 25 97 94 +43 7 39 69 35 +62 81 56 13 28 +76 12 37 14 93 + +90 81 15 55 23 +58 40 8 56 76 +83 7 78 89 47 +65 70 13 48 42 +16 69 66 52 46 + +30 38 20 32 94 +91 96 34 23 90 +16 24 49 50 86 +65 19 56 7 66 +80 60 74 71 11 + +60 77 54 25 22 + 9 61 68 6 89 +15 71 10 84 41 + 1 47 8 43 63 +69 57 85 24 81 + +54 83 73 52 49 +69 96 31 57 44 +19 66 24 6 55 +91 84 20 3 27 + 7 9 71 43 75 + +90 72 15 99 2 +73 56 48 28 62 +40 75 0 59 31 +43 67 44 24 77 +98 35 4 3 37 + + 2 85 72 39 49 +58 25 91 69 19 +34 8 57 42 55 +80 21 51 64 30 +28 32 82 84 6 + +33 77 39 13 12 +86 21 96 82 94 +78 92 42 45 70 +31 22 60 80 67 +79 27 93 55 65 + +49 90 73 72 10 +98 89 77 88 12 +83 3 31 47 21 +65 26 93 55 53 + 5 95 22 8 63 + +79 88 11 62 25 +85 14 77 4 19 +41 31 83 26 67 +46 98 74 99 2 +44 53 70 36 52 + +21 33 15 57 53 +56 91 25 69 10 +52 59 73 96 87 +65 71 14 37 2 +39 89 29 83 64 + +88 38 45 39 20 +99 72 61 96 4 +23 24 67 49 80 +77 6 65 76 18 +59 51 78 33 46 + +44 22 9 90 83 +93 50 2 54 26 +68 71 43 85 41 +38 20 6 64 24 +81 39 33 56 27 + +98 1 69 30 38 +67 52 79 31 0 +24 41 82 55 73 +33 66 64 20 7 +65 9 14 70 94 + +59 63 65 25 1 +36 85 61 82 50 +52 3 70 30 43 +79 57 31 71 76 +19 97 93 77 49 + +60 45 90 32 74 +77 64 58 44 43 +71 49 37 21 46 +50 67 1 24 15 +14 22 0 40 23 + +65 87 81 64 28 +53 80 23 76 77 +49 14 50 2 35 +85 26 88 94 30 +79 18 68 15 45 + + 6 48 38 63 92 +51 45 58 4 76 +78 40 22 17 55 +79 12 66 61 5 +68 74 0 93 89 + +66 4 65 71 77 +47 35 38 83 64 +53 16 9 56 25 +92 81 55 60 33 +80 24 73 0 26 + +26 29 55 76 38 +79 52 91 84 39 +50 57 37 34 71 +33 31 68 92 24 +81 95 5 70 8 + +83 64 11 67 42 +97 29 27 4 78 +23 10 48 71 81 +80 74 86 17 36 +61 14 85 21 96 + +18 8 7 88 25 +59 5 28 57 69 +64 54 16 70 72 +13 75 71 33 2 +60 55 46 51 32 + +23 89 63 96 88 +71 66 9 53 65 +56 46 29 95 80 +44 94 90 3 5 +11 99 59 60 78 + +42 33 81 25 0 +46 66 63 82 94 +52 73 92 30 24 +59 26 50 87 45 +79 55 74 17 64 + +95 43 13 98 18 +62 12 24 88 28 +23 11 93 51 67 +71 0 44 64 96 +66 17 84 90 19 + +38 6 12 75 27 +28 73 62 50 51 +63 86 29 98 15 +46 90 4 58 96 +20 78 64 56 82 + +19 91 23 40 1 +78 57 75 43 2 +35 60 85 74 30 +80 3 63 54 32 +82 99 89 25 88 + +88 13 92 11 72 +56 6 35 55 21 + 8 20 36 60 99 + 1 96 57 45 12 +41 73 50 83 69 + +42 69 53 76 11 +38 74 13 14 86 +18 49 51 67 61 +26 80 47 16 78 +66 46 12 68 79 + +22 90 72 93 24 +55 29 43 28 5 +99 47 87 40 51 +81 18 70 20 36 + 0 48 23 46 82 + +91 74 83 95 54 +60 56 38 37 89 +87 96 71 50 35 + 5 11 42 72 3 +77 81 36 49 97 + +71 72 17 34 93 +45 81 22 67 23 +61 20 94 14 1 +85 40 15 36 88 +54 91 62 73 9 + +66 36 39 58 60 +96 8 22 49 77 +76 64 47 78 30 +50 41 12 69 15 + 7 1 29 72 27 + +90 12 65 13 39 +75 70 47 36 79 +31 54 17 10 32 +76 92 55 83 40 +49 5 20 44 37 + +16 78 65 5 70 +63 72 89 93 66 +21 90 46 54 81 + 7 48 88 60 11 +95 0 38 3 26 + +19 65 66 41 27 + 7 18 91 52 48 +87 55 49 68 71 +85 12 4 40 1 +57 67 6 11 58 + +91 85 38 14 21 +63 93 37 76 25 +68 36 4 24 71 +43 31 60 19 95 +52 55 13 83 78 diff --git a/day_6/code.py b/day_6/code.py new file mode 100644 index 0000000..c9bb14b --- /dev/null +++ b/day_6/code.py @@ -0,0 +1,40 @@ + +db = False + +import fileinput + +state = [] + +lines = [l for l in fileinput.input()] +assert(len(lines) > 0) +assert(len(lines[0]) > 0) + +rawState = list(map(int, lines[0].split(','))) + +state = [0 for i in range(9)] + +for s in rawState: + state[s] += 1 + +days = 256 +day = 0 + +if db: + print(day, ",".join(map(str, state))) + +for day in range(1, days+1): + nextState = [0 for i in range(9)] + for i, s in enumerate(state): + if i == 0: + nextState[6] = s + nextState[8] = s + else: + nextState[i-1] += s + + state = nextState.copy() + + if db: + print(day, ",".join(map(str, state))) + +print('===') +print(sum(state)) diff --git a/day_6/example.txt b/day_6/example.txt new file mode 100644 index 0000000..a7af2b1 --- /dev/null +++ b/day_6/example.txt @@ -0,0 +1 @@ +3,4,3,1,2 \ No newline at end of file diff --git a/day_6/input.txt b/day_6/input.txt new file mode 100644 index 0000000..15f46f9 --- /dev/null +++ b/day_6/input.txt @@ -0,0 +1,2 @@ +2,1,1,1,1,1,1,5,1,1,1,1,5,1,1,3,5,1,1,3,1,1,3,1,4,4,4,5,1,1,1,3,1,3,1,1,2,2,1,1,1,5,1,1,1,5,2,5,1,1,2,1,3,3,5,1,1,4,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,4,1,5,1,2,1,1,1,1,5,1,1,1,1,1,5,1,1,1,4,5,1,1,3,4,1,1,1,3,5,1,1,1,2,1,1,4,1,4,1,2,1,1,2,1,5,1,1,1,5,1,2,2,1,1,1,5,1,2,3,1,1,1,5,3,2,1,1,3,1,1,3,1,3,1,1,1,5,1,1,1,1,1,1,1,3,1,1,1,1,3,1,1,4,1,1,3,2,1,2,1,1,2,2,1,2,1,1,1,4,1,2,4,1,1,4,4,1,1,1,1,1,4,1,1,1,2,1,1,2,1,5,1,1,1,1,1,5,1,3,1,1,2,3,4,4,1,1,1,3,2,4,4,1,1,3,5,1,1,1,1,4,1,1,1,1,1,5,3,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,5,1,4,4,1,1,1,1,1,1,1,1,3,1,3,1,4,1,1,2,2,2,1,1,2,1,1 + diff --git a/day_7/code b/day_7/code new file mode 100644 index 0000000..0dbb9f9 Binary files /dev/null and b/day_7/code differ diff --git a/day_7/code.hi b/day_7/code.hi new file mode 100644 index 0000000..bcc6ae0 Binary files /dev/null and b/day_7/code.hi differ diff --git a/day_7/code.hs b/day_7/code.hs new file mode 100644 index 0000000..70e0db5 --- /dev/null +++ b/day_7/code.hs @@ -0,0 +1,45 @@ + +import Data.List + +splitStrOnce :: String -> String -> (String, String) +splitStrOnce separator "" = ("", "") +splitStrOnce "" subject = (subject, "") +splitStrOnce separator subject = do + let sepLen = length separator + if (take sepLen subject) == separator then + ("", (drop sepLen subject)) + else do + let res = splitStrOnce separator (tail subject) + (((head subject):(fst res)), (snd res)) + +splitStr :: String -> String -> [String] +splitStr separator "" = [] +splitStr separator subject = do + let res = splitStrOnce separator subject + (fst res):(splitStr separator (snd res)) + +intOfString :: String -> Int +intOfString x = read x :: Int + +minimumsSnd :: Ord b => [(a, b)] -> [(a, b)] +minimumsSnd [] = [] +minimumsSnd xs = filter ((==) minsnd . snd) xs + where minsnd = minimum (map snd xs) + +main :: IO () +main = do + input <- getContents + let crabs = do { + map (\x -> read x :: Int) $ + map (filter (\x -> x /= '\n')) $ + splitStr "," input + } + let cases = do { + map (\x -> (x, sum (map (\y -> do { + sum [1..((abs (y-x)))] + }) crabs))) [(minimum crabs)..(maximum crabs)] + } + let min = minimumsSnd + putStrLn $ show $ snd $ head $ min cases -- ans to part 2 + +-- C'est un code pas du tout efficace \ No newline at end of file diff --git a/day_7/code.js b/day_7/code.js new file mode 100644 index 0000000..7e8ae43 --- /dev/null +++ b/day_7/code.js @@ -0,0 +1,18 @@ +const readline = require('readline') +const rl = readline.createInterface({ + input: process.stdin, + terminal: false +}) + +lines = [] +rl.on('line', (line) => { + lines.push(line) +}) + + + + +rl.on('close', () => { + console.log(lines) + +}) \ No newline at end of file diff --git a/day_7/code.o b/day_7/code.o new file mode 100644 index 0000000..baa859e Binary files /dev/null and b/day_7/code.o differ diff --git a/day_7/example.txt b/day_7/example.txt new file mode 100644 index 0000000..18bd32a --- /dev/null +++ b/day_7/example.txt @@ -0,0 +1 @@ +16,1,2,0,4,2,7,1,2,14 diff --git a/day_7/input.txt b/day_7/input.txt new file mode 100644 index 0000000..9ee8ca0 --- /dev/null +++ b/day_7/input.txt @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,51,13,782,658,1369,575,693,395,898,552,57,374,155,541,279,428,338,390,0,181,952,350,123,57,483,449,715,672,619,910,254,308,104,682,560,928,406,4,1328,878,36,1397,1111,1586,548,106,284,20,462,1248,1033,229,108,336,888,289,464,757,19,58,1,262,1202,576,101,928,265,781,145,829,1183,1220,181,194,1181,11,792,1542,1330,728,273,493,1753,327,1736,33,1547,750,1623,374,1603,26,116,169,1270,191,11,47,312,136,46,486,1478,28,64,258,74,351,85,105,1137,531,1573,56,676,532,141,955,98,4,541,1546,1771,432,844,228,103,281,404,2,1431,865,1094,12,134,483,152,308,135,135,257,439,5,174,906,148,1000,160,304,190,478,199,395,693,257,84,148,140,76,354,595,1,633,284,24,83,782,1359,1187,351,290,704,23,692,952,1417,192,868,349,56,936,279,277,115,1579,476,261,50,46,1144,568,11,495,170,726,888,548,509,1265,179,93,834,180,143,866,899,292,958,126,1608,1066,327,1149,74,227,346,110,736,592,989,27,12,123,325,650,49,76,0,299,85,261,729,1135,46,479,879,226,1146,781,852,426,184,274,1323,449,419,90,758,378,134,219,333,833,55,59,358,175,293,36,100,27,764,564,188,814,612,299,1057,829,322,235,122,330,280,1397,654,370,320,770,1082,92,1513,1085,563,455,322,664,14,1122,40,381,750,145,381,422,553,227,20,503,368,43,316,71,479,438,222,204,355,67,264,882,1168,416,14,74,371,293,3,1005,237,422,570,1391,818,451,987,529,79,28,664,454,820,1425,50,49,32,486,397,680,1247,207,6,742,84,1362,540,233,1082,847,28,199,84,111,858,362,23,1755,61,144,652,82,1379,372,329,900,255,850,1006,21,1345,252,938,214,394,12,333,354,834,298,132,246,167,140,423,50,35,463,1502,390,672,2,123,78,588,1202,523,1507,64,68,130,511,263,734,112,1463,1097,99,552,53,1189,343,496,16,260,225,1065,855,12,24,88,958,848,173,1131,1639,559,344,216,19,872,287,288,911,775,1722,1049,17,223,375,378,1109,977,520,350,138,376,75,638,284,167,328,467,146,1379,947,149,890,661,56,1339,148,346,693,52,812,963,198,120,1194,231,7,1558,148,545,325,1038,57,52,936,117,531,684,266,687,394,851,1068,571,627,558,172,998,909,1403,358,13,419,0,1247,81,46,647,833,1370,340,287,74,51,691,198,129,257,769,108,163,480,295,150,1944,1897,161,1081,1521,733,351,376,126,191,94,228,76,957,652,487,805,10,347,217,394,1142,725,780,50,234,654,233,119,1035,226,110,757,75,6,13,649,396,13,191,115,368,60,731,485,621,1454,669,518,29,41,495,768,504,209,222,1168,34,1061,1654,973,979,55,802,139,489,386,757,1258,1720,757,994,172,572,266,15,267,830,1105,30,112,188,26,54,205,1206,1193,688,8,1149,1355,983,1073,434,62,1242,264,181,146,8,20,968,418,607,105,22,221,392,127,388,1055,98,241,58,805,2,801,925,241,931,1184,472,563,167,398,388,1290,111,237,1167,332,293,166,51,319,201,40,128,58,90,270,525,1171,1222,1129,1657,525,427,69,340,547,1486,174,383,900,763,160,193,696,896,477,564,558,870,294,868,951,267,178,454,35,1042,627,1451,740,2,107,4,632,114,754,83,244,43,699,83,1001,226,404,956,522,73,505,193,662,548,525,110,1241,415,794,1954,1062,1217,32,98,4,355,143,146,900,369,1418,250,404,703,469,34,326,62,231,564,44,655,511,1139,1010,1438,354,1117,591,118,509,496,1438,232,1179,526,259,984,643,169,165,50,1136,86,702,412,1762,62,219,1089,687,10,29,330,893,1658,732,48,806,1158,854,14,44,548,627,811,41,1212,341,474,943,25,699,204,1449,769,134,23,28,1216,622,1371,366,233,8,29,615,16,166,256,324,169,657,21,854,674,10,1217,1499,1512,88,369,771,60,317,28,1251,14,1318,376,264,55,658,1873,1280,581,850,147,267,1147,150,6,18,1166,331,163,281,773,1284,501,588,1055,681,41,506,270,104,1212,440,181,1177,257,1444,406,111,662,75,28,214,892,349,380,1677,1885,88,398,713,1596,99,541,219,149,1222,455,29,78,217,618,33,94,335,1050,848,958,67,12,61,9,1133,96,151,1057,60,167,324,99,49,1159,571,270,1291,217,276,42,8,20,652,949,134,132,552,365,112,355,952,167,33,1053,994,445,277,652,569,1594,248