summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Day4/CHANGELOG.md5
-rw-r--r--Day4/Day4.cabal34
-rw-r--r--Day4/app/Main.hs38
-rw-r--r--Day4/input1000
4 files changed, 1077 insertions, 0 deletions
diff --git a/Day4/CHANGELOG.md b/Day4/CHANGELOG.md
new file mode 100644
index 0000000..5f7ef6d
--- /dev/null
+++ b/Day4/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Revision history for Day4
+
+## 0.1.0.0 -- YYYY-mm-dd
+
+* First version. Released on an unsuspecting world.
diff --git a/Day4/Day4.cabal b/Day4/Day4.cabal
new file mode 100644
index 0000000..6c9c1d3
--- /dev/null
+++ b/Day4/Day4.cabal
@@ -0,0 +1,34 @@
+cabal-version: 2.4
+name: Day4
+version: 0.1.0.0
+
+-- A short (one-line) description of the package.
+-- synopsis:
+
+-- A longer description of the package.
+-- description:
+
+-- A URL where users can report bugs.
+-- bug-reports:
+
+-- The license under which the package is released.
+-- license:
+author: Andreas Grois
+maintainer: andi@grois.info
+
+-- A copyright notice.
+-- copyright:
+-- category:
+extra-source-files: CHANGELOG.md
+
+executable Day4
+ main-is: Main.hs
+
+ -- Modules included in this executable, other than Main.
+ -- other-modules:
+
+ -- LANGUAGE extensions used by modules in this package.
+ -- other-extensions:
+ build-depends: base ^>=4.16.3.0
+ hs-source-dirs: app
+ default-language: Haskell2010
diff --git a/Day4/app/Main.hs b/Day4/app/Main.hs
new file mode 100644
index 0000000..62a9817
--- /dev/null
+++ b/Day4/app/Main.hs
@@ -0,0 +1,38 @@
+module Main (main) where
+
+import System.Environment
+import qualified Data.Bifunctor
+
+main :: IO ()
+main = getArgs >>= readFile . head >>= print . solveDay4
+
+solveDay4 :: String -> (Int, Int)
+solveDay4 x = (solveDay4Part1 x, solveDay4Part2 x)
+
+solveDay4Part1 :: String -> Int
+solveDay4Part1 = length . filter containingRanges . map parseRanges . lines
+
+newtype CleaningCells = CleaningCells (Integer,Integer)
+
+parseRanges :: String -> (CleaningCells, CleaningCells)
+parseRanges = Data.Bifunctor.bimap parseRange parseRange . splitAtChar ','
+
+splitAtChar :: Char -> String -> (String, String)
+splitAtChar c x = splitAtCharacter c ("",x)
+
+splitAtCharacter :: Char -> (String, String) -> (String, String)
+splitAtCharacter c (a, b:bs) = if b == c then (a,bs) else splitAtCharacter c (a++[b], bs)
+splitAtCharacter c (a,[]) = (a,[])
+
+parseRange :: String -> CleaningCells
+parseRange = CleaningCells . Data.Bifunctor.bimap read read . splitAtChar '-'
+
+containingRanges :: (CleaningCells, CleaningCells) -> Bool
+containingRanges (CleaningCells (a1,b1), CleaningCells (a2,b2)) = (a1 >= a2 && b1 <= b2) || (a2 >= a1 && b2 <= b1)
+
+solveDay4Part2 :: String -> Int
+solveDay4Part2 = length . filter overlappingRanges . map parseRanges . lines
+
+overlappingRanges :: (CleaningCells, CleaningCells) -> Bool
+overlappingRanges (CleaningCells (a1,b1), CleaningCells (a2,b2)) =
+ (a1 >= a2 && a1 <= b2) || (b1 >= a2 && b1 <= b2) || (a2 >= a1 && a2 <= b1) || (b2 >= a1 && b2 <= b1) \ No newline at end of file
diff --git a/Day4/input b/Day4/input
new file mode 100644
index 0000000..bab3d4d
--- /dev/null
+++ b/Day4/input
@@ -0,0 +1,1000 @@
+14-50,14-50
+43-44,43-87
+55-99,51-96
+67-68,68-91
+8-8,27-73
+22-92,21-92
+4-80,3-80
+10-67,34-67
+49-56,49-89
+27-96,27-28
+30-47,29-47
+75-75,16-74
+50-70,47-63
+9-89,10-88
+1-69,16-68
+9-76,52-76
+4-96,98-98
+28-66,11-29
+47-60,46-47
+37-88,36-88
+37-98,37-99
+9-88,87-88
+2-8,2-3
+29-98,29-46
+12-98,12-83
+85-99,19-98
+5-37,37-37
+52-99,52-99
+50-76,27-75
+57-59,29-58
+6-71,71-74
+61-77,62-77
+76-76,16-75
+3-27,4-27
+1-2,1-46
+4-74,4-73
+71-99,13-70
+29-92,30-92
+59-59,58-58
+49-54,50-51
+3-85,69-86
+26-76,66-66
+14-97,9-97
+43-44,7-45
+54-54,37-54
+2-91,4-68
+43-84,78-83
+4-97,3-97
+8-42,13-97
+26-95,2-16
+25-68,25-68
+4-57,3-62
+23-85,23-24
+68-78,32-74
+27-70,34-70
+6-70,69-71
+54-56,5-55
+21-54,21-54
+8-85,7-8
+46-57,45-63
+77-79,26-78
+9-37,8-37
+7-66,66-67
+76-93,93-93
+20-73,21-74
+12-13,12-14
+77-97,77-97
+12-92,13-13
+85-85,82-86
+80-91,18-74
+1-96,1-99
+29-31,30-30
+78-94,77-77
+32-45,3-58
+15-76,15-76
+49-73,73-97
+12-73,19-73
+95-95,22-94
+13-67,13-19
+4-5,6-99
+60-62,4-61
+16-54,16-55
+88-92,90-93
+33-40,40-86
+72-94,49-71
+4-94,5-48
+1-37,1-37
+18-84,83-84
+64-77,77-78
+93-93,92-93
+25-94,95-95
+10-41,6-41
+66-89,69-86
+21-97,22-97
+60-74,2-60
+39-60,54-59
+29-74,73-73
+44-61,43-61
+10-80,11-80
+79-80,4-83
+3-7,8-98
+40-47,48-68
+73-85,73-86
+72-85,73-85
+3-95,94-99
+63-64,11-64
+41-60,36-42
+2-45,6-10
+42-45,41-58
+9-77,73-75
+48-55,13-54
+23-33,23-24
+92-92,16-91
+83-97,84-97
+93-97,2-94
+34-80,33-62
+37-92,87-93
+67-67,32-67
+1-72,7-71
+57-85,86-88
+53-56,50-53
+97-99,3-98
+3-6,8-93
+22-81,22-99
+53-77,53-53
+97-99,3-98
+35-55,35-55
+30-30,30-95
+27-94,28-37
+30-68,57-79
+30-84,83-85
+16-22,14-21
+95-95,2-95
+34-45,35-51
+16-36,12-17
+3-3,3-95
+8-77,6-78
+4-89,6-86
+77-83,76-88
+43-43,37-42
+41-62,44-97
+67-86,85-87
+82-96,99-99
+75-92,80-83
+12-29,12-29
+82-94,18-81
+9-93,97-97
+83-93,79-84
+90-97,17-90
+29-32,22-31
+14-48,3-81
+72-84,63-84
+7-98,6-97
+6-83,6-82
+6-83,58-93
+2-62,11-80
+77-77,76-82
+36-37,36-60
+1-84,7-83
+10-48,32-72
+2-51,25-48
+22-96,18-99
+99-99,55-95
+5-59,1-60
+65-70,4-69
+10-91,10-90
+6-98,1-7
+83-90,88-91
+39-39,24-38
+34-87,4-35
+86-88,15-85
+44-52,43-44
+1-81,53-99
+85-88,85-99
+87-87,63-87
+96-99,1-96
+20-22,21-23
+32-57,33-56
+4-89,4-90
+16-81,17-52
+83-99,16-84
+14-21,15-16
+38-80,79-86
+60-81,59-99
+90-93,15-89
+2-74,75-78
+3-91,18-67
+22-91,22-22
+16-19,18-83
+9-81,10-91
+2-98,2-49
+93-94,77-94
+28-92,11-93
+36-99,36-97
+32-48,48-48
+11-14,15-71
+5-81,5-56
+23-61,23-24
+92-94,23-93
+3-40,7-98
+28-98,99-99
+2-62,50-63
+20-43,18-18
+38-51,50-51
+3-11,37-46
+8-95,2-7
+96-98,23-73
+73-92,73-73
+96-99,1-97
+2-83,83-88
+12-73,99-99
+13-86,12-87
+87-87,23-87
+95-96,40-71
+18-42,18-92
+29-61,23-62
+59-97,58-93
+35-74,34-75
+8-94,9-95
+15-65,76-82
+26-89,16-97
+53-71,11-85
+5-51,3-51
+21-43,22-76
+33-33,23-32
+10-29,9-30
+87-88,87-96
+2-50,3-51
+23-83,22-87
+15-96,95-97
+10-77,9-78
+67-95,67-95
+17-18,18-64
+2-9,8-83
+8-51,50-51
+92-92,2-92
+6-16,5-15
+32-47,37-49
+15-81,75-96
+34-75,49-71
+6-71,6-71
+15-92,91-92
+43-91,43-91
+50-78,49-77
+35-56,55-55
+45-77,76-77
+9-76,9-91
+7-88,7-88
+51-72,50-51
+21-98,7-44
+35-89,35-89
+17-87,4-87
+60-75,61-61
+92-96,45-93
+47-59,46-58
+4-97,1-28
+38-39,37-39
+9-63,24-84
+8-94,14-93
+49-86,58-85
+10-13,8-42
+98-98,41-93
+25-75,26-92
+5-80,79-81
+6-56,23-56
+17-94,94-94
+87-87,34-87
+55-57,55-69
+48-80,37-47
+99-99,2-99
+38-57,37-56
+63-86,62-86
+97-97,24-98
+18-61,17-60
+10-68,6-42
+86-86,11-86
+9-24,24-24
+17-73,72-72
+12-97,13-98
+5-83,29-84
+5-45,79-95
+36-36,51-86
+3-63,2-86
+1-65,17-36
+7-7,6-9
+5-5,5-99
+8-48,7-46
+3-83,1-84
+28-76,29-77
+65-94,3-95
+14-53,15-50
+1-29,15-41
+9-86,9-94
+30-97,29-48
+74-86,78-83
+2-17,3-17
+83-83,29-82
+16-76,96-96
+3-63,4-63
+2-98,2-98
+15-98,14-97
+2-13,14-62
+31-76,75-77
+97-97,28-98
+87-87,82-87
+37-45,38-46
+17-39,21-42
+23-67,43-62
+3-43,3-4
+67-91,67-80
+10-91,10-11
+1-97,6-97
+29-97,99-99
+78-78,18-77
+5-98,6-98
+49-86,87-96
+6-84,7-7
+1-92,1-92
+33-51,24-32
+15-85,2-86
+67-86,67-92
+4-78,6-90
+15-92,8-92
+12-93,94-99
+12-67,32-96
+73-95,74-96
+35-45,35-42
+68-69,67-77
+16-70,7-16
+84-86,21-85
+12-19,5-18
+82-94,94-95
+8-27,28-28
+55-93,11-93
+31-86,98-99
+41-65,41-64
+56-76,31-57
+15-41,7-41
+92-94,7-93
+5-24,25-39
+5-25,24-24
+3-3,3-20
+52-92,91-91
+16-94,16-95
+3-85,1-86
+38-90,38-90
+35-36,35-98
+7-18,7-8
+12-35,12-36
+6-89,31-33
+37-56,40-67
+1-98,1-99
+2-96,2-99
+13-49,13-19
+9-99,51-77
+3-87,74-88
+69-69,17-69
+39-98,38-43
+20-42,19-57
+57-99,35-56
+90-98,89-89
+9-71,8-70
+5-72,5-38
+37-91,4-37
+46-87,10-93
+9-78,8-77
+58-58,11-59
+8-13,14-95
+76-84,75-83
+27-77,1-27
+17-96,14-55
+50-55,33-55
+86-99,86-92
+58-81,81-81
+88-88,70-88
+36-36,18-36
+57-59,11-58
+5-6,6-15
+94-97,39-94
+27-63,27-80
+35-57,36-58
+4-83,8-83
+84-91,15-64
+10-43,44-79
+51-51,16-51
+4-97,5-98
+10-36,22-29
+3-90,56-87
+63-90,83-98
+53-75,52-74
+89-96,29-88
+66-99,21-98
+14-19,19-86
+27-27,26-65
+75-82,18-76
+11-95,94-98
+77-78,78-90
+13-15,14-72
+11-88,25-88
+23-23,22-46
+32-41,33-78
+54-90,39-60
+14-71,15-68
+3-95,95-95
+29-73,72-73
+20-33,20-33
+33-61,33-85
+15-92,15-95
+7-77,43-68
+50-55,54-55
+38-65,38-64
+43-68,54-77
+15-58,15-51
+2-38,3-46
+36-36,36-73
+9-70,10-71
+79-83,82-88
+55-86,55-55
+19-57,18-60
+26-31,27-76
+14-66,3-13
+94-97,2-95
+10-98,21-94
+20-44,21-44
+47-99,46-99
+13-31,21-24
+1-99,99-99
+17-92,53-93
+54-74,53-74
+8-16,16-98
+10-98,10-99
+18-67,68-89
+38-77,76-85
+26-66,25-67
+9-35,35-94
+10-43,11-44
+69-92,4-38
+48-84,15-49
+5-50,23-51
+9-27,27-71
+21-99,21-21
+4-97,97-99
+41-53,2-52
+11-66,2-57
+32-75,16-31
+7-59,6-58
+45-97,93-96
+14-71,10-71
+50-98,37-49
+29-76,77-77
+78-80,79-80
+23-30,22-30
+4-5,4-98
+17-35,35-36
+16-42,42-43
+50-92,19-51
+29-57,29-56
+27-75,3-80
+10-62,62-62
+48-76,24-49
+71-73,2-72
+38-42,40-41
+24-74,25-30
+4-22,1-21
+6-47,6-46
+31-36,31-85
+6-98,8-98
+98-99,52-98
+34-90,49-91
+44-88,45-89
+33-94,94-95
+6-91,3-6
+6-8,5-87
+8-97,75-98
+45-75,94-94
+60-80,60-99
+97-97,30-98
+15-16,15-79
+40-67,63-96
+24-94,22-93
+6-57,8-57
+8-97,97-97
+83-83,44-78
+13-17,20-95
+8-56,56-87
+7-96,1-96
+21-88,22-82
+2-44,2-44
+10-93,14-66
+10-98,10-82
+4-55,1-1
+4-5,4-98
+21-29,28-29
+67-82,24-33
+26-99,26-27
+46-74,73-74
+83-83,71-83
+33-52,23-53
+53-89,30-52
+35-67,51-67
+24-87,86-98
+21-96,21-64
+92-93,30-92
+32-41,41-94
+99-99,6-97
+98-99,4-95
+3-74,2-74
+50-50,20-51
+4-19,18-18
+8-94,3-95
+23-84,59-65
+34-75,74-74
+57-92,17-94
+40-42,41-84
+29-62,29-97
+94-97,99-99
+66-70,66-71
+98-99,22-99
+26-72,26-55
+11-66,11-94
+8-91,8-87
+50-74,44-88
+71-76,71-72
+1-65,1-65
+61-89,1-88
+8-12,8-15
+92-94,14-92
+4-95,1-95
+24-96,24-90
+34-75,27-74
+13-77,18-94
+21-89,13-90
+10-96,9-10
+43-56,24-56
+9-14,9-10
+3-95,31-95
+36-52,43-46
+29-44,44-96
+20-96,13-97
+45-78,36-84
+8-72,9-72
+96-99,42-97
+14-75,76-76
+48-71,61-72
+18-78,17-77
+4-37,2-2
+9-98,4-8
+29-51,49-52
+67-80,52-80
+24-24,22-57
+11-80,11-80
+19-22,79-86
+47-87,47-87
+58-70,58-71
+44-67,44-54
+2-63,2-96
+8-28,7-70
+3-20,20-21
+35-69,69-95
+2-18,1-18
+4-92,91-93
+31-70,31-71
+46-48,11-47
+75-77,23-76
+78-78,24-77
+8-71,8-13
+19-85,26-73
+64-82,88-99
+30-74,4-74
+3-15,1-15
+44-57,43-45
+36-99,35-96
+14-84,8-84
+2-84,11-80
+19-36,37-37
+38-61,60-85
+28-76,27-29
+63-65,52-64
+84-86,1-85
+45-45,9-45
+5-71,3-96
+42-44,35-45
+41-72,41-73
+4-62,2-51
+14-29,14-29
+10-11,11-91
+95-95,1-96
+6-80,5-78
+31-68,69-87
+5-80,80-81
+5-91,8-68
+15-86,98-99
+49-88,49-84
+4-15,16-73
+31-79,64-65
+85-85,5-85
+21-47,17-20
+13-87,25-78
+94-94,1-93
+4-96,3-96
+22-61,6-61
+3-85,2-80
+16-17,17-66
+23-67,67-67
+13-83,55-83
+97-97,63-98
+17-62,17-17
+43-61,44-80
+47-56,52-59
+48-87,87-96
+49-50,75-88
+5-95,5-95
+5-72,7-71
+16-51,50-51
+25-80,11-79
+23-91,24-91
+94-96,48-95
+17-99,17-17
+3-68,67-68
+15-84,9-85
+29-87,26-87
+88-91,87-96
+6-70,69-70
+40-58,34-43
+19-98,39-98
+3-96,3-95
+38-86,85-88
+32-71,47-63
+62-88,14-99
+24-54,94-95
+14-26,15-15
+29-86,19-87
+7-83,10-84
+4-95,96-96
+45-55,45-54
+9-71,27-93
+27-85,45-85
+32-79,2-77
+34-79,20-78
+8-20,12-20
+5-6,6-91
+14-34,14-35
+19-67,73-74
+5-95,5-96
+23-96,3-23
+30-51,15-52
+39-52,35-51
+45-45,28-44
+8-15,16-16
+3-90,2-75
+36-84,36-84
+86-97,86-97
+20-93,67-92
+18-43,16-90
+1-12,13-98
+12-93,11-50
+15-79,15-93
+77-82,59-78
+31-92,32-93
+27-79,28-90
+4-76,32-85
+26-46,45-45
+85-89,85-96
+28-43,28-95
+37-97,20-96
+2-64,64-64
+46-51,47-87
+82-88,7-82
+14-48,44-46
+25-99,25-25
+31-31,30-71
+23-89,88-90
+55-83,38-92
+19-67,11-68
+16-32,17-71
+59-79,79-81
+28-95,23-28
+86-96,11-87
+20-46,31-49
+5-6,5-49
+15-79,15-90
+95-97,3-96
+17-19,18-57
+56-82,57-98
+92-92,47-91
+88-89,89-91
+97-98,6-96
+7-89,8-63
+49-85,2-50
+74-75,62-75
+14-35,15-35
+11-64,5-46
+2-6,5-83
+58-95,28-81
+28-73,29-29
+84-93,30-83
+41-97,97-98
+22-48,22-48
+54-90,76-90
+88-99,8-89
+67-94,68-68
+51-55,51-90
+40-58,44-89
+60-78,60-77
+23-69,23-85
+34-85,35-86
+87-99,16-75
+34-96,96-98
+39-72,12-72
+25-92,92-94
+8-73,73-82
+12-92,13-95
+30-92,55-98
+37-37,10-38
+31-38,34-34
+54-88,2-85
+12-42,41-41
+5-97,96-97
+82-82,20-83
+3-24,1-24
+20-96,96-96
+33-99,34-54
+26-93,26-37
+21-58,21-58
+61-86,2-47
+5-65,4-98
+2-66,2-99
+64-66,15-65
+11-75,2-58
+55-75,47-93
+37-58,36-58
+21-71,21-71
+45-92,40-58
+18-40,37-43
+33-65,33-65
+43-84,91-93
+13-13,13-80
+30-84,31-72
+38-98,39-98
+42-88,91-98
+10-91,9-10
+56-66,67-94
+55-87,54-78
+9-96,9-95
+18-63,7-64
+9-28,27-29
+32-67,16-68
+1-9,15-45
+34-44,34-80
+98-98,89-99
+9-68,10-96
+42-43,26-43
+82-90,91-93
+21-21,11-21
+7-58,5-95
+93-95,60-93
+7-40,8-94
+25-26,26-96
+8-98,7-98
+23-87,24-87
+9-51,10-48
+21-99,18-98
+32-79,7-55
+2-99,1-99
+11-85,3-85
+2-85,1-85
+21-83,59-70
+33-33,32-34
+21-60,22-43
+14-29,14-28
+35-55,34-54
+50-59,50-50
+39-68,67-85
+14-21,6-79
+26-47,47-87
+2-82,82-89
+46-55,46-47
+6-86,87-87
+60-60,8-64
+27-28,28-79
+1-2,1-98
+11-85,84-89
+12-27,20-21
+6-93,9-90
+6-92,2-98
+77-86,25-76
+37-62,79-82
+69-97,36-96
+7-92,99-99
+73-73,32-74
+92-97,62-95
+41-96,51-96
+22-97,34-96
+25-26,26-50
+11-86,12-87
+68-84,4-82
+14-87,46-86
+28-30,29-68
+1-68,2-45
+6-92,5-94
+2-28,36-77
+5-11,5-24
+35-91,29-91
+40-93,7-94
+70-96,10-69
+67-96,10-66
+67-67,67-67
+1-63,3-63
+9-95,8-95
+78-78,37-79
+47-48,47-79
+14-93,14-14
+24-96,31-96
+29-29,6-30
+60-67,60-67
+80-80,2-81
+24-85,30-84
+66-73,72-82
+58-97,59-97
+9-9,9-95
+21-42,22-42
+5-35,3-6
+39-98,97-98
+85-96,44-97
+65-98,11-97
+2-94,2-95
+64-96,66-97
+2-99,2-95
+32-51,32-43
+4-11,11-40
+1-64,1-1
+89-96,19-88
+11-32,12-17
+5-98,5-98
+17-98,16-96
+18-71,17-98
+37-75,37-71
+37-92,37-92
+7-88,38-76
+3-13,12-52
+6-96,7-97
+91-99,2-90
+30-95,30-31
+9-27,9-59
+72-78,39-72
+23-30,27-84
+75-92,26-74
+30-36,31-35
+55-55,24-54
+32-71,32-33
+6-88,87-96
+16-97,15-96
+44-81,81-98
+63-92,40-64
+70-70,14-71
+33-59,34-36
+13-26,13-62
+64-86,2-85
+38-90,37-90
+71-80,16-81
+10-41,17-97
+11-74,10-74
+88-96,85-89
+3-64,1-65
+71-79,78-95
+25-39,25-40
+18-98,2-99
+42-43,43-66
+2-90,3-91
+8-86,86-94
+10-97,98-99
+3-99,13-51
+35-84,72-84
+26-27,13-27
+10-71,2-87
+71-82,72-80
+60-87,28-64
+58-79,44-78
+1-98,2-98
+28-99,26-50
+12-77,27-76
+5-57,56-56
+29-43,29-43
+41-86,10-41
+45-69,44-69
+14-91,15-91
+42-57,62-73
+24-30,24-26
+57-64,62-65
+14-47,14-15
+3-88,79-89
+2-4,4-80
+54-90,10-89
+6-47,6-47
+66-68,65-70
+82-85,9-84
+73-91,73-79
+83-96,16-82
+93-96,41-72
+6-41,40-81
+7-53,3-7
+85-96,84-89
+9-20,10-71
+25-44,43-45
+2-99,99-99
+7-95,8-96
+50-53,49-53
+9-26,10-26
+3-50,47-50
+40-59,60-60
+66-71,72-72
+3-74,1-75
+43-79,25-80
+29-30,29-31
+8-50,58-68
+41-96,42-96
+62-64,62-81
+4-88,5-88
+2-93,2-92
+57-58,58-88
+56-84,31-80
+90-91,4-90
+8-72,40-73
+41-76,41-53
+57-57,5-62
+20-40,19-39
+74-77,21-80
+1-64,4-97
+13-48,48-88
+21-28,4-28
+14-16,14-14
+9-24,5-25
+20-67,17-18
+66-81,67-98
+22-61,23-57
+31-67,66-67
+14-75,74-76
+12-95,13-97
+49-51,1-50
+1-74,12-75
+4-93,94-94
+76-80,98-99
+74-79,78-80
+35-79,22-80
+30-89,88-89
+31-77,31-94
+73-90,89-94
+7-83,7-98
+5-98,4-6
+4-99,96-98
+19-75,18-75
+9-99,9-99
+69-75,6-68
+48-69,47-85
+7-80,6-87
+28-35,7-99
+59-60,41-59
+28-64,27-64
+5-97,1-73
+33-88,89-94
+20-98,10-98
+9-12,10-83
+11-73,74-90
+28-86,85-87
+14-56,56-90
+47-98,46-98
+11-83,82-83
+16-46,45-47
+98-98,1-98
+32-72,33-41
+3-62,2-62
+47-48,25-47
+12-46,5-46
+10-78,10-10
+18-95,4-94
+24-81,9-70
+6-98,90-97
+3-55,38-60
+55-68,55-67
+22-80,22-82
+6-70,7-7
+13-15,12-18
+54-95,38-89
+19-93,42-93
+65-92,93-97
+50-93,50-63
+50-99,50-99
+49-49,3-48
+4-54,4-54
+48-49,49-80
+1-4,3-3
+66-98,17-67
+56-70,55-93
+51-95,51-51
+64-73,37-65
+21-72,37-76
+45-73,46-73
+35-38,36-39
+17-36,17-37
+98-98,17-99