Day 16
authorNeil Smith <neil.git@njae.me.uk>
Sat, 16 Dec 2017 22:57:31 +0000 (22:57 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Sat, 16 Dec 2017 22:57:31 +0000 (22:57 +0000)
advent-of-code.cabal
data/advent16.txt [new file with mode: 0644]
problems/day16.html [new file with mode: 0644]
src/advent16/advent16.hs [new file with mode: 0644]
src/advent16/advent16.ipynb [new file with mode: 0644]

index a9cf4509d8c9afe390c66efcbb79f32c6cd6c8d2..de95bf64214f51af3ae819c96fb1147428957b20 100644 (file)
@@ -153,4 +153,16 @@ executable advent15other
   hs-source-dirs:      src/advent15
   main-is:             advent15other.hs
   default-language:    Haskell2010
-  build-depends:       base >= 4.7 && < 5
\ No newline at end of file
+  build-depends:       base >= 4.7 && < 5
+
+executable advent16
+  hs-source-dirs:      src/advent16
+  main-is:             advent16.hs
+  default-language:    Haskell2010
+  build-depends:       base >= 4.7 && < 5
+                     , containers
+                     , mtl
+                     , text
+                     , megaparsec
+                     , vector
+
diff --git a/data/advent16.txt b/data/advent16.txt
new file mode 100644 (file)
index 0000000..6cc02e1
--- /dev/null
@@ -0,0 +1 @@
+po/k,x4/0,s12,x7/6,pf/c,x15/14,s11,x7/8,s12,x6/0,pd/i,x11/12,s1,x10/8,s4,x6/5,s2,x14/7,s15,x13/11,s8,x10/15,s8,x6/11,pm/c,x2/4,s5,pa/k,s7,x11/15,s8,x0/10,s12,x9/3,s3,x5/4,s7,x7/10,pj/i,x14/15,pl/o,x6/13,pb/h,x12/5,pe/l,x1/7,s2,x6/13,pp/k,x10/1,s13,x7/12,s8,x3/11,pf/i,x1/8,s2,x15/5,s5,x8/9,s1,x1/14,s9,x9/11,pj/l,x3/10,pp/m,x7/13,pg/a,x14/11,pc/f,s3,x6/15,s2,x10/14,pb/l,x6/13,s8,pa/h,x9/14,pl/d,x13/11,s7,x4/0,s8,x8/11,ph/m,x3/14,s3,x5/4,po/f,s14,x3/12,s13,x5/13,s15,x14/15,pb/i,x11/9,s7,x6/15,s14,x9/8,pf/g,s4,x2/3,s1,x10/12,s7,x4/7,s15,x10/0,s14,x14/1,s7,x11/4,s13,x8/14,pm/n,x6/5,s9,pc/h,x4/0,pa/m,x11/7,s11,x1/2,s14,pf/o,x12/11,s3,x0/7,pn/a,x10/9,pk/j,x3/14,s2,pg/m,x6/12,s12,x1/10,po/b,s14,x6/13,s5,x2/10,s5,pl/k,x14/4,pp/m,s7,x7/6,pn/o,x13/15,s4,pm/d,x3/10,po/n,x13/5,pj/e,x11/7,s8,x0/2,s13,x4/6,s12,x10/9,s10,x13/14,s5,x6/10,pn/k,x4/8,pi/g,x11/3,s7,x4/5,pn/l,x15/7,pf/j,x13/0,pi/g,x14/8,po/e,x4/2,s11,x8/10,pl/c,x15/5,s4,x4/7,pd/e,x9/1,s6,x10/12,s3,x3/8,pl/j,x9/0,s2,x15/14,s13,x8/4,s9,x13/3,pn/k,s7,x6/15,s9,x7/13,pg/i,x3/9,s11,x5/15,pk/c,x7/0,s6,x2/14,po/i,x6/1,pp/g,x4/10,pk/f,s1,x2/13,s6,pa/i,x12/1,s15,x0/5,s14,x11/10,pg/e,x5/12,s2,x2/8,s12,pl/n,s3,pf/g,x14/4,s15,x12/2,pb/h,x10/1,pc/m,x2/14,pg/l,s4,x3/12,s7,x13/2,s7,x1/10,s1,pc/p,x5/2,s9,x1/11,s14,x0/2,pe/k,x12/1,s9,x4/7,s15,x1/0,s10,x9/4,po/i,x0/14,pj/h,x10/6,s2,x4/12,pe/a,s3,x9/13,s4,x3/8,pm/b,x1/13,s7,x8/4,pk/n,s9,x14/7,pj/o,x0/8,s13,x5/7,s11,x8/1,s6,x5/15,pn/f,x9/11,s11,x7/5,pp/k,x3/11,s3,pb/f,s5,x2/10,pg/d,s4,x6/5,s14,x9/7,s13,x5/11,po/h,s14,x4/0,s11,x10/2,s12,pk/n,x4/8,pb/e,x12/5,s7,x8/0,s9,pi/p,s14,x13/5,ph/c,x9/14,s8,x4/15,s10,x2/12,po/i,x1/10,s5,x3/14,pd/l,x2/6,s3,x5/0,pb/j,x6/14,pd/o,x3/5,s13,x15/7,s6,pe/g,x9/3,s3,x15/11,pa/p,x9/3,pl/m,s11,pc/a,x11/6,s4,x0/2,s11,x13/7,po/e,x5/15,s13,x6/1,s12,x14/10,s4,x7/3,s7,x13/0,s8,pk/l,x11/4,s2,x9/10,s15,x5/8,s15,pd/o,s15,x4/7,pl/e,x2/8,pg/d,x11/14,s11,x6/0,pb/i,x13/3,pl/c,x4/11,s10,x7/8,s7,x4/12,pj/f,x14/5,s11,x6/9,s15,x15/10,pn/i,x7/9,pk/f,x12/6,pj/g,x7/2,pk/i,x6/15,s4,pm/b,x11/0,pj/c,x1/2,s6,x7/14,s12,x10/9,s7,x1/15,pn/f,x11/6,pl/k,s2,x14/0,ph/m,x15/12,pe/o,x4/6,s9,x14/12,s15,x2/11,s2,x10/8,s8,x5/12,s13,x10/14,pp/c,x12/11,s1,x13/15,pa/m,x5/7,pg/j,x13/11,s3,x9/0,s8,x7/11,s13,x9/12,s8,x15/0,pa/d,x4/5,s13,x3/12,pk/h,x1/2,s14,x0/12,s8,x6/8,pb/m,x14/1,s9,x13/7,pi/a,s5,pf/l,x6/14,s11,x15/3,pm/n,x13/5,s12,ph/f,x15/11,pc/i,x14/8,s3,x6/15,s15,pe/a,x3/7,pm/f,x12/4,pi/h,s12,x6/1,pk/b,x0/2,s1,x6/15,s9,x14/10,s15,x0/11,s7,x4/7,pl/m,x0/10,po/p,x5/11,pc/e,x7/0,s14,pd/j,x2/4,s1,x0/14,s6,x11/15,s12,x0/10,pc/e,x5/12,pm/l,x13/11,s14,x3/5,s2,x9/1,pb/i,s7,x12/14,s14,x13/3,s8,x8/0,s3,x1/2,s7,x5/4,s9,x13/0,s15,x4/15,pl/d,x8/1,s2,x7/14,s4,x15/12,s12,x8/13,pc/f,x14/4,s13,x5/9,s4,x14/1,s8,x10/6,s2,x2/12,s7,x13/7,s7,x14/5,s6,x13/0,s4,x12/5,pn/e,x6/2,pm/o,x4/12,pf/b,x11/9,s4,x4/10,s5,x9/2,s15,x13/10,s2,x0/2,pl/g,x4/1,s9,x11/7,s10,po/m,x0/9,s14,pp/l,s1,x15/14,pj/f,x1/10,s10,x11/6,s3,x3/9,s1,x15/5,s6,x11/14,s14,x12/13,s6,x2/8,s3,x6/1,pl/c,x13/9,pp/o,x12/11,s7,x8/13,s2,x12/0,pd/i,x14/4,s15,x11/10,s3,x6/1,pj/c,x3/15,pl/d,x4/13,s9,x11/3,s12,x6/14,s7,x7/10,pc/i,x3/8,s4,x6/9,pp/d,x12/13,s10,x6/4,s9,x13/5,s11,x10/2,pe/k,x3/9,pc/o,x12/15,s13,x0/8,pj/g,s5,x3/15,s15,x0/4,s9,x12/1,s1,x15/10,s2,x12/8,pd/n,x14/13,s3,x12/5,pf/a,x3/4,pb/h,x15/5,pj/c,x4/1,s13,x13/12,s14,x9/8,pm/g,x7/5,pa/e,x12/14,ph/k,x5/8,s8,x0/12,s14,x10/9,pm/c,x4/7,s2,x13/2,s11,x8/12,s1,x10/4,pj/h,s10,x5/0,pl/a,x12/14,s3,x4/1,s3,x7/0,pg/m,x5/2,s12,x8/7,po/e,x2/10,s12,x11/3,s7,x12/2,s1,x11/5,s12,x14/4,s11,x10/8,ph/m,x2/5,pf/p,x8/14,s2,x11/12,s7,x7/6,pi/a,x10/1,s13,x14/5,pp/j,x9/4,pl/b,s7,x13/0,pa/o,x14/8,pb/j,s8,x3/5,pl/p,s13,x15/13,s1,x14/8,s1,ph/o,x10/0,s15,x13/3,pa/p,s10,x4/12,pm/f,x2/6,s3,x8/3,s10,x0/10,s2,x1/5,pj/p,s14,x8/12,s7,x0/13,s13,x3/4,s6,x10/11,s10,x1/9,po/e,x7/6,ph/j,x12/2,s10,x3/11,pg/l,x5/15,s6,x10/8,pe/d,x14/11,s4,x2/15,s1,x12/7,s4,x11/1,pf/g,s5,x4/15,s13,x11/2,s14,x3/15,pn/o,x1/9,pb/m,x15/14,pi/d,x4/0,s15,x10/12,s1,x5/7,s4,x4/15,s7,x9/3,s15,x15/12,s13,x2/9,s7,x12/13,s12,x2/14,s9,ph/c,s4,x4/13,pl/f,x3/12,pi/j,s13,x0/11,s8,x3/7,pn/h,x6/11,s15,x1/8,s8,x5/13,pe/o,x7/2,s2,x15/1,s9,x7/13,s2,x15/2,pn/k,x7/11,s12,pb/l,x4/1,s8,x14/13,s4,x11/0,s14,x13/10,pd/f,x4/5,ph/l,x3/12,s11,pa/c,x2/6,s14,x10/8,s9,x3/6,s8,pn/d,x11/8,pl/b,x1/2,s14,x7/9,s12,x10/4,s7,x12/11,po/p,x0/9,s13,x10/11,pd/i,x1/8,s10,x2/14,s14,x11/6,s14,x2/9,s10,x0/8,s5,x14/5,s5,x4/6,s5,x8/1,s1,x10/4,s5,x3/13,pb/g,x5/15,ph/l,x2/12,pf/g,x9/11,s15,x12/8,s14,pa/i,x6/11,s8,x12/14,pc/e,x0/2,pg/h,x3/12,s9,x10/5,s11,po/i,x1/12,s11,x10/2,pk/g,x8/6,pb/n,x13/3,s15,x15/12,pg/o,s2,x9/5,s7,x6/0,s3,x10/11,pf/a,x12/15,s7,x4/2,s8,x14/15,pp/l,x13/8,pf/b,x14/3,pj/k,s4,x10/15,s4,x2/13,s8,x11/7,s4,x6/3,pp/l,x2/0,pm/d,x14/3,pk/o,x1/11,s7,x7/0,pg/e,x6/1,pj/m,x15/14,s5,x2/7,s13,x1/3,s10,x8/14,s13,x0/3,pc/i,x6/9,s15,x5/11,s14,x0/4,s10,pj/a,x1/14,pg/e,x3/7,pm/d,x6/10,pj/l,x7/15,pf/b,x12/13,s2,x8/4,s3,x10/1,s12,x11/12,s6,x5/14,s12,x13/12,s13,x7/4,pc/m,s13,x10/15,s2,x5/3,pl/h,x1/13,s10,x0/12,s1,x9/8,pc/j,s4,x6/2,s3,x5/14,s8,x11/3,s14,x2/15,s11,x9/5,pk/n,s3,x1/3,pp/o,x7/10,pl/i,x11/2,s5,x15/10,pk/f,x11/2,s5,x8/0,s5,x6/13,s8,x8/15,s6,x7/4,s11,x2/0,s13,x13/11,s8,x7/5,s11,x11/15,ph/b,x14/12,pc/p,x9/0,po/l,x4/2,pg/j,x0/1,pa/n,x3/5,pd/h,x6/8,pb/c,x14/9,s1,x15/3,pl/p,x1/11,s8,x15/2,pm/n,x6/3,s13,x4/12,s13,x13/7,pd/e,x5/6,s10,x15/4,s8,x3/13,pm/n,s14,pi/p,x14/10,s15,x0/6,s2,pd/m,x10/8,s4,po/g,s12,x5/15,s10,x6/1,pf/l,x14/3,s12,x9/10,pd/n,x0/14,s8,x7/6,s5,x5/4,s9,x11/14,pa/i,x4/0,s13,x5/3,s8,x12/6,s1,x10/8,ph/n,x14/4,s2,x6/8,pe/j,x7/9,pa/k,x2/11,pl/c,x8/13,s1,x2/5,s2,x6/14,pb/m,x11/8,pp/e,x9/6,ph/f,x13/4,s13,x1/7,pa/p,x2/13,pf/l,x4/5,po/b,x6/15,pk/h,x2/7,s7,x14/0,pi/p,x5/9,pm/d,x14/6,s1,pn/f,x3/5,pp/g,x4/7,pl/o,x14/11,pb/h,x3/2,pa/d,x7/9,pp/h,s3,x12/11,s11,x7/4,pd/j,x14/13,s7,x9/4,po/p,x0/5,pm/d,x8/12,s8,x6/5,s14,x0/12,s13,pb/e,x11/8,s1,x7/15,s13,x2/3,pd/f,x15/1,pa/g,x10/8,s8,pk/b,x9/11,pi/j,x6/8,s11,x5/15,s11,x9/14,s7,x6/8,pl/k,s4,x7/4,pg/p,x3/6,s8,x7/13,pk/m,x3/2,s9,x8/15,s6,x2/13,s12,pg/d,x10/4,pe/m,x6/8,s4,x1/10,s8,x0/8,s9,pn/o,x9/14,pk/j,s6,x15/5,ph/g,x9/3,s8,pk/n,x11/14,pj/g,x2/4,s9,x15/0,ph/e,x5/12,s6,x8/3,s6,x15/5,s11,x2/3,pb/c,x0/10,s6,x15/14,pa/i,x2/1,s3,pn/f,x9/14,pp/d,x4/10,s2,x11/13,s3,x2/9,s10,pb/h,x12/4,s9,x11/0,s5,x12/6,s1,x7/5,s14,x12/9,pk/n,x11/15,s11,x14/0,pm/j,x9/2,pp/f,x3/15,s5,x12/2,s9,x0/15,po/j,x4/11,s5,pp/e,x9/12,s4,x1/14,s4,x6/8,pb/l,x10/2,s10,x15/11,s3,x0/3,po/a,x10/2,pn/d,s6,x0/3,s12,x9/12,pa/o,x11/3,s6,x7/14,pb/l,x1/3,s12,x4/12,s4,x8/11,ph/a,x5/3,s9,x8/0,pd/k,x2/9,s12,x6/8,s14,x15/13,pi/e,x1/9,s11,x7/2,pl/p,x12/0,pc/f,x6/3,pb/m,x14/10,s6,x9/13,s14,x11/5,pj/f,x2/1,s2,x6/5,s14,x12/3,s14,x11/6,s2,x0/13,pl/b,x11/14,s15,x9/6,s1,x12/15,pp/e,x2/8,pk/h,x13/15,pm/g,x9/12,s15,x4/5,s1,x15/3,s3,x0/13,s5,x6/11,s14,x3/7,s8,x4/13,s5,x9/8,pi/k,x7/13,pg/b,s11,x14/4,s6,x5/11,pf/i,x12/14,pl/j,x7/8,pm/f,x12/3,s8,x13/0,s13,x12/11,pp/d,x4/8,pf/g,x2/14,s4,x15/12,s2,x7/3,pi/j,x11/2,s4,pa/p,x1/15,s8,x13/14,s13,x10/1,s10,x13/14,s8,x7/3,s8,x5/11,s7,x13/7,s2,x0/11,pn/j,s2,ph/c,x14/15,pi/g,s13,x4/11,s10,pj/l,x6/14,s2,x4/11,s12,pe/i,x2/1,s1,x6/11,s7,x3/14,pp/j,x4/15,ph/g,x2/0,s10,x15/13,s10,x14/0,pc/a,x6/11,po/d,x1/2,pn/a,x6/0,pc/h,x9/10,pg/n,s3,po/k,s9,pb/j,s8,x8/3,s2,x11/10,s12,x2/14,s3,pl/g,s11,x4/11,s9,pp/h,x13/1,s5,x6/9,s15,x13/4,pd/n,x11/1,s3,x4/7,pe/k,x12/10,pi/a,s7,x7/2,pm/e,s14,x4/15,s7,pl/h,x9/5,pb/a,x4/3,s6,x5/8,pg/h,x11/2,s11,x12/13,pn/e,x9/6,s2,x0/3,s14,x13/11,pm/d,s1,x4/10,pl/f,x6/11,s8,x14/2,pc/o,x11/7,s6,x4/15,pa/l,x10/3,s1,x4/6,s3,x0/15,s9,x6/3,s13,x2/9,pc/m,x10/4,s12,x2/9,s14,x12/3,pb/n,x14/13,ph/d,s12,x7/15,s13,x1/13,pg/o,x12/9,s2,x0/2,s7,ph/m,x11/9,s9,x5/13,pg/f,x6/7,pj/a,x1/0,s4,x2/3,s9,x5/11,pe/f,x15/2,po/g,x9/7,pd/k,x3/6,s10,x2/12,s13,x6/13,pa/c,x2/0,po/g,x13/14,pm/n,x4/12,s6,x15/14,s3,pk/i,x6/4,s5,x9/15,pd/h,x10/8,pf/b,x2/1,pg/i,x14/6,po/m,x7/15,pj/h,x10/12,s9,pn/l,x1/5,s13,x15/11,pk/e,s4,x12/14,pb/h,x2/0,s12,x6/9,s14,x0/14,s5,x2/7,po/f,x10/4,s15,x15/5,pe/l,x3/6,s3,x1/5,pk/m,x9/13,s4,pg/l,x5/4,pb/a,s2,x6/7,s5,x15/5,s5,x11/0,s3,x5/9,pe/o,x12/2,s6,x15/5,s13,x8/0,s15,x12/14,pk/h,x0/7,po/f,x5/8,s2,pk/e,x15/2,s5,x3/7,pp/j,x2/11,s6,x5/4,s6,x1/0,s6,x2/13,pm/a,s13,x11/5,s15,x7/14,s4,x13/15,s12,x2/12,pj/i,x15/5,pk/n,s11,x8/4,pj/i,x10/14,s1,x13/6,pc/o,x10/8,s3,x12/0,pp/h,x5/1,s5,x6/14,pg/o,x4/2,s9,x9/3,s8,x8/14,ph/e,x6/3,s1,x14/13,s6,x15/7,pg/n,x2/9,pj/m,x1/0,pd/c,x4/9,s9,x1/12,pa/n,x9/10,s6,x1/12,pd/l,x8/3,s9,pf/n,x10/7,s12,x3/14,s1,x1/9,pp/e,s14,x0/15,s5,x10/6,pl/j,x12/2,s5,x7/8,s9,x15/11,s11,x3/10,s13,x12/14,s5,x15/3,pe/i,x2/1,pp/o,x7/8,pi/k,x14/11,s3,x3/9,s2,x14/10,s9,x0/7,s12,x8/14,s9,pl/j,x6/13,po/f,x12/8,s3,x7/15,s14,x3/0,pl/k,x14/10,pm/h,x9/4,pn/i,x5/1,s9,x0/2,s7,x13/10,pa/l,x4/0,pg/b,x11/13,s13,x12/9,s12,pj/m,x14/6,pe/l,x12/11,s12,x4/8,s5,x12/13,s10,x10/9,s8,x7/12,s14,x3/5,pb/k,x0/9,s2,x13/12,pj/i,x7/14,pm/e,x0/11,ph/p,s14,pd/a,x7/1,s11,x13/14,s15,pk/l,x2/12,s3,x5/10,pn/p,x4/2,s2,x9/1,pi/a,x5/15,s13,x1/10,s1,x5/8,s10,x6/15,s12,x14/7,pl/e,x9/10,s14,x13/5,pg/b,x7/1,s2,pa/p,x5/4,s9,x13/8,s2,x12/10,pk/j,x0/9,s10,x11/3,s7,x9/5,s14,x12/10,pf/e,x1/6,s4,x4/0,s8,x2/3,s5,x12/7,pl/n,x14/8,s13,pd/a,x1/9,pm/o,x5/7,s15,x6/14,pj/i,x2/9,s11,x12/1,s14,x4/7,pg/a,s13,x2/12,pp/h,x1/5,s8,x3/2,s15,x11/0,s14,x15/1,s2,pi/m,x8/7,pj/g,x6/15,pn/b,x14/7,s6,x6/15,pm/d,x3/8,s14,x9/12,pe/o,s15,x8/2,pj/l,x15/1,s13,x0/9,pn/m,x10/6,ph/f,s8,pb/d,x1/15,s11,x11/10,s14,pc/p,s3,x1/7,s13,x15/8,s10,x9/4,pj/n,s6,x11/10,pi/c,x3/1,s9,x10/14,s13,x9/4,pk/b,x11/1,po/h,x14/12,s2,x10/3,s14,x11/13,s1,x0/14,s4,x3/7,s9,x15/12,pj/p,s8,x11/2,pe/n,x1/10,s4,x5/0,pg/b,x2/8,s7,x6/4,s4,x1/2,pi/o,s6,x7/9,pa/e,x2/3,pc/l,x7/0,s15,x3/10,ph/g,x12/8,pf/n,x2/6,s15,x8/11,pc/o,x1/7,s11,x0/11,s13,x1/7,s12,x2/3,pe/d,x14/11,s1,x5/9,pk/i,x11/13,s6,x1/15,s15,x8/2,pj/m,x7/9,s14,pd/a,x10/3,s4,x5/15,s3,pj/l,x6/12,pa/f,x14/0,s3,x1/9,s10,pp/j,x12/11,s14,x13/15,s14,x7/2,s4,x1/14,pb/i,x2/5,pn/m,s11,x14/6,s4,x12/9,ph/i,x4/1,pk/b,s5,x13/2,pc/g,x6/7,s7,x0/11,pl/p,x2/14,s13,x9/10,s11,x14/15,s8,x8/5,pb/h,x1/11,s6,x7/10,s3,pg/e,x4/12,pa/j,x5/1,ph/e,x9/3,po/p,x2/13,s10,x7/3,s5,x8/10,s3,x7/0,s8,x9/8,pf/b,x11/13,pe/i,x0/10,pn/b,x4/6,s14,pj/a,x12/10,pb/p,x0/5,s2,x1/10,s1,x9/8,s5,x4/12,pl/c,x13/11,s1,pd/g,x0/5,s5,x13/15,s3,x8/10,s7,x7/2,s11,x5/14,s15,x3/8,pj/e,x12/6,s1,x1/7,s1,x14/15,s3,x6/5,pd/a,x10/1,s11,x4/7,s10,pn/i,x9/10,s9,pe/k,x12/0,ph/a,s9,x3/4,pb/e,s7,pk/j,x1/11,s10,x9/15,s3,x6/3,s15,x10/5,s8,x11/14,s9,x10/12,s11,x14/6,pf/h,x0/15,pj/a,x12/14,pg/o,s8,x11/8,s4,x3/7,pl/f,s3,x5/0,pm/g,x3/15,s11,x5/6,pa/o,x11/8,pc/b,x6/10,s9,x5/14,s13,x1/4,pj/d,x10/3,pe/c,x2/11,pm/n,x9/3,pd/f,x0/4,pj/h,x1/7,s12,pg/m,x8/10,s12,x9/7,s1,x8/5,pa/p,s15,x12/0,pe/g,x6/7,ph/c,s2,x0/11,s6,x14/13,s1,x5/8,pi/b,x9/13,s3,x7/14,pj/f,x4/3,s3,x9/5,pn/h,x15/4,s11,x3/11,s12,x8/10,s8,po/l,x6/11,pj/g,x10/13,pb/o,x3/6,s11,x4/14,s5,x8/9,pj/f,x5/2,s4,x0/13,s15,x8/5,s4,x15/13,s9,po/e,x2/12,s13,x4/0,s4,x9/15,s12,x3/12,s8,x10/1,s4,x13/2,pp/b,x15/12,pn/i,x10/4,pm/j,x3/9,s13,x13/12,s2,x14/8,s15,x15/11,s3,x13/3,pd/n,x15/7,pj/a,x10/6,s2,x3/9,pg/k,s12,x1/8,s11,x14/13,pc/n,x8/0,s13,x9/3,pg/l,s5,x5/13,s3,x11/15,s8,x9/7,s5,x10/5,pe/a,s9,x13/14,s2,x12/10,pc/m,x3/15,pj/k,x7/5,po/p,x13/0,s10,x3/8,s2,x15/1,s1,x10/13,s13,x5/9,s13,pf/a,x13/3,s1,x14/7,s9,x10/15,ph/n,x12/13,s11,x0/10,s8,x1/8,po/g,x3/15,pj/e,x0/7,s13,x9/11,pd/l,x15/6,pa/p,x0/13,s5,x1/5,s9,x10/6,s11,x14/0,pe/g,x3/12,pb/h,x6/5,pf/c,x11/14,s15,x6/13,s4,x8/14,po/d,x1/2,pm/a,x6/7,s11,x15/2,s10,x10/0,s8,x15/11,pj/d,x3/10,pc/p,s4,pa/b,x2/7,s8,pj/e,x12/0,s9,x3/4,s3,x1/13,s14,x2/14,s3,x3/13,po/b,x9/11,pa/j,x1/13,pk/o,x14/5,pm/b,x10/6,s14,x5/14,pk/h,s13,x9/0,pm/b,x12/11,s14,x10/5,s10,x2/4,s5,x0/15,pf/i,x5/6,s5,x12/15,pk/a,x8/6,s15,x9/0,s8,x11/5,s2,x14/12,s3,x13/4,s4,pm/n,x5/8,s4,x14/2,pe/k,x5/6,ph/f,s2,x1/3,po/m,s14,x4/15,s11,x7/11,s12,pj/d,x6/15,s8,x0/1,s7,x9/5,s8,x1/3,s7,x13/10,s3,x6/11,s4,po/k,x10/3,s6,x1/0,pg/b,x6/10,ph/f,s15,x0/13,pc/n,x6/7,s8,x11/9,pi/a,x8/15,s8,ph/k,x1/6,s10,pm/n,x14/2,s10,x1/6,s12,x12/0,s7,x3/9,pd/a,x11/1,pn/m,s6,x15/8,pl/a,s10,x2/12,pb/h,x5/3,s8,x11/10,pi/n,x6/12,s4,x3/10,s4,x0/12,pf/o,s8,x7/15,s3,x9/1,pc/m,x8/3,s11,x10/1,s15,x11/6,s14,x1/10,pg/h,x5/3,s13,x1/11,s14,x10/15,pk/d,x6/5,s2,pi/f,x14/11,pp/e,x15/3,ph/n,x13/4,s8,x14/9,s7,x11/15,s12,x2/3,s11,x9/0,s11,x5/6,pf/o,x3/8,s3,x9/6,s2,ph/d,x3/8,s14,x2/6,s13,x1/3,s8,x5/13,s6,x15/11,pc/m,x13/5,s12,x9/3,s12,pp/g,x12/6,s9,x4/1,pe/n,x5/15,s15,x14/3,ph/c,s2,x7/10,pp/k,x12/13,s8,x1/2,pc/o,x8/10,pp/b,x2/14,s3,x10/4,pd/m,x14/3,pk/n,x2/0,pg/b,x15/10,pa/l,x1/0,s6,x8/6,pi/j,x9/13,pa/f,x1/11,pe/h,x13/5,s14,x4/3,pm/l,s3,x9/0,s5,x11/8,s9,x5/3,pd/i,x6/2,s8,x5/9,s15,x1/8,ph/a,x11/7,pn/b,x13/10,s10,x11/2,pg/d,x13/9,s2,x7/5,s8,x13/11,pk/o,x3/1,s10,x8/13,s11,x14/7,s7,x5/6,pe/b,x0/10,pf/i,s15,x6/12,ph/b,x5/1,s7,x11/3,s4,x13/4,pc/n,x9/5,s9,x1/11,s1,x6/2,s13,x13/7,pb/m,x1/14,s14,x3/8,s10,pf/p,s14,x5/1,s13,pl/o,x4/15,s5,x12/2,pb/e,x3/6,s4,x13/0,s12,x2/4,s2,x8/13,s2,x1/11,s3,x15/12,s3,x13/4,s4,x15/7,pd/l,s3,x1/0,pe/g,x2/6,pf/k,x3/7,pg/d,x5/15,pp/n,x13/3,s7,x10/6,s7,x14/1,s7,x13/7,s8,x10/2,pd/e,x14/3,s8,x9/5,s7,x15/3,pa/i,x6/0,pl/p,x11/15,s15,x13/10,s14,x7/1,pn/b,x5/13,s9,x8/1,pf/k,x4/11,s3,x5/14,s5,x8/12,s4,x6/1,s4,x12/0,s7,x5/13,pi/g,x14/15,pl/h,x11/0,pp/e,x14/3,ph/d,x5/13,s14,x2/3,s9,x12/13,s1,x1/0,s7,x5/9,s5,x7/4,s2,x15/13,po/m,x8/10,s8,pk/b,x5/9,pj/o,x8/1,s5,x2/9,s10,pp/c,x3/12,s8,x10/15,pi/n,x2/4,s4,x10/3,s14,x12/1,s3,x13/15,pc/l,x7/2,s5,x6/0,s10,x7/13,s2,x0/6,s2,x10/3,s15,x4/11,pe/j,x10/8,s2,x14/7,s7,x13/2,s5,x14/10,pc/d,s4,x8/11,s2,x1/10,po/h,x14/13,pi/m,x6/10,s13,x8/1,ph/b,x6/9,s6,x11/15,s11,x9/10,s8,x4/11,s3,x8/0,pn/p,x4/2,s4,x9/11,pm/l,x10/12,s6,x9/14,pf/a,x11/4,s1,x13/6,s10,pp/j,x7/12,ph/o,x9/8,pa/f,x1/5,s5,x14/8,s6,x10/4,s11,x14/12,pj/h,x15/5,s11,x3/13,s15,x9/7,pg/k,x1/15,s4,x11/7,s2,x3/5,s4,x0/14,pf/e,x1/12,pi/k,x7/6,pg/h,x15/8,pn/d,x3/1,s6,pe/c,s8,x8/15,s13,x1/6,pb/d,s13,x2/14,s7,x6/4,pa/g,s10,x8/12,pc/b,s7,x9/1,s11,x5/2,s6,x10/8,s4,x14/4,s2,pl/d,x15/8,s13,x7/1,s5,pf/b,x0/14,s10,x4/11,pe/c,x15/7,pf/b,x1/0,pg/d,x6/15,s15,x14/2,pc/p,x15/5,po/a,x6/13,pl/c,x11/2,s13,x8/5,pd/a,x15/11,po/l,x0/7,s6,pn/g,x15/13,pj/l,x14/11,po/i,x0/12,s12,x13/8,s15,x14/7,s5,x8/6,s8,x11/10,s10,x9/12,s6,x15/10,pa/d,x4/3,pp/o,x6/9,s5,x14/2,s15,pe/a,x11/6,s5,x0/9,pl/p,x14/7,s9,x5/9,s9,x1/0,s12,x4/2,pi/k,x12/7,pn/b,x0/10,s11,x5/15,s3,x0/3,pe/f,x11/7,pl/d,x3/8,s7,x12/14,pb/n,s10,x8/15,s12,x2/13,s8,x12/11,s2,x3/13,s6,x2/15,pp/d,s9,x14/9,s2,x8/15,ph/e,x11/1,s11,x3/12,pk/i,x13/4,s3,x1/5,pn/j,s6,x8/11,s8,x6/12,s2,x9/3,s6,x13/14,pk/b,x6/10,s14,x11/8,pc/d,x9/4,pl/h,s15,pm/d,x1/11,s10,x4/0,s10,x10/2,pi/f,x12/3,s15,x0/9,s9,x3/5,s6,x2/10,s7,x13/6,pn/l,x11/0,s7,pb/j,x14/5,s15,x11/4,s10,x12/10,s15,x4/8,s4,x5/9,s1,x4/8,pe/c,x0/14,s11,x10/13,s13,x2/7,pg/d,x12/1,pb/e,x8/15,s4,x5/10,s3,x6/4,s12,x9/0,ph/f,x11/7,pk/o,x15/3,pg/n,x12/5,s3,x14/0,pl/f,s9,x1/5,s2,x0/15,s14,pm/d,x2/1,s7,pc/f,x8/9,pi/g,x4/12,pn/c,x0/3,s6,x11/8,pe/m,x13/14,s15,x11/1,s8,x8/2,s7,x1/0,pd/b,x4/12,s11,x0/5,s6,x1/9,po/c,x2/14,pm/j,x0/9,s5,x2/5,s8,x7/14,pe/c,s10,x2/5,pa/m,x10/13,s12,x0/14,s14,x9/10,po/n,s8,x7/3,s3,x0/1,s10,x15/11,s13,x13/1,s3,pk/j,s6,x11/15,pa/g,s8,x10/2,pj/k,x8/3,pf/h,x13/2,pp/l,x3/7,pb/j,x8/6,s6,x11/12,s15,x2/7,s2,x0/12,pe/p,x2/1,s12,x9/13,pj/c,x6/3,s6,x8/2,s13,x14/12,s8,x11/15,pl/h,x9/7,pf/b,x14/3,pn/o,x7/15,ph/p,x11/1,s13,x15/13,pn/g,x0/6,pp/m,x11/8,pn/h,x15/7,s12,x11/1,s7,x2/7,s6,x11/15,pk/e,x1/14,s14,x6/13,s12,x11/12,pn/i,s4,x10/2,pa/h,x4/7,s4,x1/14,pl/b,x10/9,s11,x1/13,s7,x3/9,s5,x11/15,s6,x3/8,pf/n,x1/15,pp/j,x8/12,pd/c,x6/9,s14,x3/14,pj/o,s5,x13/4,s6,x6/8,s8,x3/4,s13,x12/2,s14,x5/10,s8,x3/4,s13,x14/6,s10,x11/5,s6,x13/14,s9,x11/5,pm/h,x9/7,s13,x0/1,pd/l,x7/3,s10,x6/11,s9,x12/14,s13,x3/2,ph/i,x15/10,s15,x0/2,po/g,x9/11,pe/n,x15/10,s9,x4/11,s15,x3/14,s9,x5/7,s1,x15/2,s7,x6/8,po/j,x11/15,s6,x4/1,s15,x7/13,pa/d,x12/3,pj/c,x8/13,pk/o,s5,x3/4,s11,x15/12,s3,x3/13,s2,x1/10,pj/b,x6/8,s1,x5/13,pl/f,x4/14,pg/i,s1,x2/11,pd/p,x12/6,s14,x3/9,s13,x7/10,s2,x12/4,s6,pn/l,x2/7,pg/f,x12/14,s11,x6/4,pi/e,x10/9,pm/o,x8/3,s14,x11/14,s6,x13/1,pp/k,x15/3,pc/f,x12/2,s4,x5/1,ph/i,x11/13,po/a,x10/2,s7,x14/0,pi/l,x10/15,s10,x1/5,s3,x9/0,pe/h,s11,x14/13,pl/k,x5/11,pn/f,x13/1,s3,x7/3,pj/i,x14/4,s13,x3/11,s1,pa/n,x5/0,pp/o,x10/12,pa/l,x1/14,s9,x6/8,s3,pe/p,x4/7,po/d,x12/13,s5,x3/11,pc/b,x13/4,s3,x12/8,s15,x11/10,s14,x1/5,ph/k,x4/15,s8,x9/1,s5,x10/11,s7,x2/12,pl/m,x14/6,s9,x4/8,s12,x0/11,pp/d,s3,x5/2,pa/c,x3/8,s8,x9/2,pf/o,x4/15,s1,x12/1,s15,x7/15,pc/d,x14/13,s5,pl/o,x9/0,s1,x5/7,pp/i,x10/9,s12,x2/5,s9,x9/1,s11,x4/7,pn/k,x2/8,pg/f,x15/12,s8,x6/4,s5,x2/1,s12,x8/10,s7,x3/12,pl/c,x6/2,pj/k,x15/10,s15,x2/5,s1,x14/3,pl/p,x15/9,s8,x2/1,s7,x9/5,s10,x14/2,s13,x3/0,s1,x9/1,s4,x12/3,pk/f,s15,x13/7,s5,x12/9,pa/c,x5/15,s9,x0/9,s1,x14/3,po/m,x9/15,s14,x6/2,pj/k,x5/1,pa/f,s5,x9/0,s1,x13/4,pm/b,x10/7,s4,x13/12,pl/n,x7/1,s4,x3/2,pc/o,x7/4,s14,x2/11,s9,x10/7,s6,x2/14,s5,x4/1,pn/j,x3/8,pb/l,x10/4,s13,ph/g,x13/8,s15,x1/11,pe/d,x7/9,s13,x13/15,s8,x12/10,pj/p,x5/4,s15,x15/6,s1,x12/13,s5,x1/3,s9,x13/2,s11,x14/7,s1,x1/6,s10,x2/5,s4,x9/11,pn/f,x1/10,s11,x9/7,pl/e,x14/3,s10,x2/1,s10,x3/14,s7,x5/8,s7,x7/4,s14,x14/12,pp/a,x3/13,s9,x8/7,ph/n,s5,x2/3,s8,x6/14,s15,x11/9,s4,x15/1,pi/k,x0/4,s11,x14/3,ph/m,s12,x12/15,s13,x11/5,s9,x6/15,s10,x3/1,pp/c,x9/2,pj/f,s4,x1/4,pk/h,s4,x9/7,pi/a,x0/5,pj/l,x13/3,pm/a,x4/11,ph/n,x15/3,s9,x14/12,s14,x8/2,s2,x14/9,pi/l,x0/13,pf/a,s8,x11/7,s3,pk/n,x3/1,s3,x10/15,s4,pd/l,s5,x8/2,pb/g,x9/14,pe/l,x13/10,s9,pg/h,x5/8,s7,x15/3,s15,x5/9,pe/m,x3/12,pc/n,x1/0,s2,x8/9,s2,x13/3,s3,x4/1,pp/b,x15/3,s6,pj/e,x9/14,pk/d,x7/3,pe/f,x9/13,s2,x7/14,s2,x15/13,s5,x0/10,pd/j,x4/1,s2,pl/b,x3/0,s8,x10/7,s14,x11/1,pp/j,x15/14,s5,x8/13,s6,x7/14,pi/f,x1/2,s5,x11/13,pj/o,x6/0,pn/m,s9,x15/5,s3,x0/6,s14,x2/1,s2,x4/10,pi/c,x15/13,s9,x14/3,ph/l,x11/12,pa/o,x14/5,s3,x12/7,s11,x11/8,pd/m,x2/9,s8,x0/5,pe/l,x9/2,s11,x10/11,s4,x12/1,pb/i,x3/9,s12,x7/10,s10,x14/9,s15,x12/0,s1,x4/7,pl/k,x9/12,s6,x10/4,pa/b,x15/14,s6,x0/7,s13,x15/9,pc/n,x3/10,pd/b,x1/9,pk/j,x15/2,pe/c,x13/7,s5,x8/9,s4,x12/6,s4,x10/4,pb/k,x7/13,s1,x4/10,s13,x6/3,po/e,x12/5,pc/d,x2/0,ph/l,x12/7,pe/p,x1/2,pg/n,x0/10,s4,x6/4,s11,x11/13,pe/b,x14/12,s8,x4/0,s6,x9/14,s14,x15/5,s6,x3/4,pp/h,x0/10,s15,x7/1,s7,x2/11,s1,x7/13,s9,x8/0,s10,x3/4,pd/c,x10/7,s15,x11/4,pp/g,x0/6,s1,x11/14,pl/n,s6,x10/8,po/a,x0/6,pe/p,x10/8,s6,x2/12,s10,x3/14,s4,x4/0,s7,x9/15,pj/g,x14/7,pa/k,x9/4,s10,pc/f,x7/13,s8,x2/0,s4,x15/1,s13,x0/8,s9,pk/i,x3/10,pd/p,x2/8,s14,x9/10,s4,x4/6,pc/g,x12/14,s7,x5/0,s6,x4/7,s14,x9/2,s4,x12/7,s3,x10/3,s5,x9/2,s7,x1/5,pm/d,x8/3,pg/l,x0/14,s11,pe/d,s15,x1/6,s5,pa/h,x4/0,pl/j,x6/1,s14,x4/13,s6,x10/11,s2,pm/n,x0/15,s3,x8/7,ph/e,x3/11,pc/k,x15/7,s7,x6/4,s5,pg/e,x9/15,s15,x0/6,s5,x2/9,pc/i,s3,x8/7,s4,x10/9,pm/n,s6,x11/14,s14,x15/6,s5,x12/9,s4,x8/5,ph/e,x7/12,s14,pc/j,x14/11,pm/n,x6/12,s9,x11/13,s5,x1/12,s12,x5/10,s4,pf/k,x13/11,s15,x9/14,ph/p,s13,pk/c,x15/0,s4,x4/12,s4,x11/14,pi/p,s14,x4/13,pg/b,x2/15,pk/e,s12,pp/g,x3/7,pj/m,x0/12,s10,x6/7,s15,pp/i,x4/10,pj/k,s4,x9/0,s5,x4/6,s3,x11/1,s12,x15/9,pn/c,x13/14,pd/k,s8,x10/6,pa/i,x2/11,s13,x5/6,s14,x15/12,pd/n,s4,x4/5,pk/i,x2/3,pj/b,x13/10,s9,pn/i,x15/14,pj/d,x6/0,s14,x12/13,s11,pn/o,x6/2,pf/k,x4/11,s2,x7/2,pl/n,x4/8,s13,x1/3,s13,x0/10,pi/j,s13,x3/6,pe/h,x4/1,pm/l,x6/10,pp/d,x0/3,pi/m,s1,pp/j,x10/15,s6,x12/4,pe/m,x0/10,pk/g,x6/11,s4,x4/13,pj/o,s15,x1/14,s10,x10/0,s11,pg/h,x4/11,s4,x13/7,s7,x4/10,pn/k,x3/15,pg/l,x4/2,s15,x8/10,s14,x15/11,s9,x9/3,pj/n,x14/11,s2,pe/h,x15/9,s12,x6/0,pp/i,x11/3,s14,x5/2,s14,x3/9,pb/f,x4/13,s10,pp/k,x6/7,ph/f,x3/12,s9,x5/15,pd/c,s13,x7/2,s1,x9/6,pk/h,x15/12,s14,x9/7,s6,x11/14,s10,x3/1,s11,x11/15,s10,x0/13,s6,x7/3,pa/p,x0/9,pn/l,x7/14,s15,pc/g,s2,x11/10,pk/b,x6/4,s5,x9/13,s8,x12/0,s5,pg/j,x11/3,pa/i,x6/12,pn/l,x3/4,s2,pj/e,x12/7,pl/n,x2/15,s1,x12/13,s8,x15/3,pd/k,s14,x4/6,pn/g,x3/5,s13,x9/4,pp/f,x13/11,pm/j,x5/8,pc/d,x3/11,pm/a,s14,x15/8,pi/n,s8,x14/10,s2,x8/9,pb/a,x1/6,pf/l,x15/9,s2,x13/4,s5,x2/10,ph/g,x14/7,s10,x10/4,s2,x7/11,s11,x15/13,po/e,x1/9,pp/i,x14/7,s12,x0/4,s15,x8/10,s1,x5/9,s6,x2/15,pl/b,x12/13,s1,x11/8,s9,x2/12,pp/j,x15/13,s7,x12/6,pd/h,x2/7,s4,x15/3,pg/n,x6/0,pi/h,x13/8,s11,x0/9,po/m,x15/11,s1,x2/5,s13,x14/7,s12,x10/8,pi/e,x1/7,s9,x9/3,pp/h,x0/4,s7,x15/1,s10,x11/5,s4,x10/1,pn/j,x3/13,s7,x2/7,s10,x14/3,s11,x8/15,pk/g,s9,x11/3,s3,x9/8,s11,x14/7,pa/m,x2/5,pi/g,x7/8,s4,x14/12,pl/o,x2/8,pa/i,x6/10,pk/o,x7/11,s10,x5/1,s1,x11/10,pa/d,s10,x5/13,pi/k,x6/8,s9,x14/15,pc/l,x8/5,pg/f,x12/4,pn/a,x11/1,pd/l,x7/15,s14,x11/1,s2,x7/14,s15,x12/2,s11,x3/10,s7,x6/11,s4,x12/0,pb/h,x11/9,s13,x12/4,s5,x1/2,s11,pa/e,x9/8,pm/i,x10/12,pl/c,s3,x11/7,s11,x8/4,pp/e,x2/9,s11,x7/13,pl/c,s8,x14/15,pd/h,x9/7,s7,x0/11,s11,pa/p,x9/5,s9,x12/10,pn/e,s12,x13/0,pp/a,x2/3,s9,x8/15,s7,x11/5,s8,x3/2,po/h,x0/4,s8,x2/12,s3,x6/15,s15,x12/2,pc/d,x9/15,s11,x13/5,ph/f,x6/3,s11,pk/d,s15,x11/8,pc/m,x10/13,pa/f,x14/7,pk/p,x2/3,s14,x14/10,ph/g,x15/12,s7,x1/2,pl/p,x3/13,s15,x12/4,s9,x0/7,s10,x8/4,pn/h,x11/5,s1,pg/f,x8/15,s12,x11/4,pj/o,x1/12,s9,x15/4,s11,x2/9,s12,x4/8,pn/c,x14/13,s13,x0/10,s15,x5/15,pm/e,x9/8,s7,x10/1,pi/k,x5/7,s15,x14/4,pn/o,x3/5,pa/i,x15/7,pn/g,x12/10,s8,x15/3,s13,x12/14,s2,x15/4,s12,x5/10,s11,x2/13,s15,pc/b,x0/11,s1,x8/2,s1,x5/6,s3,x0/8,pp/h,x14/10,pk/i,x7/0,s7,x3/5,s6,x2/7,pg/h,s1,x14/10,pj/a,x8/6,s2,x2/11,pm/g,x15/14,s14,x10/2,s2,x3/14,s9,x15/8,s1,x14/0,s6,x5/11,ph/j,x0/8,pa/i,x1/2,pd/c,x4/9,s2,x11/12,s5,x14/7,s5,x12/11,s4,x0/2,pe/o,x9/10,s12,x4/11,pa/l,x5/9,s4,pc/d,x7/4,pl/n,x15/8,s12,x14/1,s11,x2/7,po/a,x11/12,pd/f,x14/5,s7,x11/7,po/i,x0/6,pk/b,x14/10,s5,x3/1,pa/f,x13/11,s6,x7/12,pd/g,x3/6,s11,x11/15,s15,x9/5,s6,x10/2,s15,x0/13,s10,x1/2,s8,x13/4,s1,x5/10,s13,x14/9,s9,pm/a,x7/8,pg/b,x5/10,s6,x3/6,pe/h,x12/1,pn/a,x0/8,pp/d,s4,pk/f,x11/3,s9,x8/10,pg/b,x6/0,s2,x8/4,s13,x11/7,pk/i,x6/4,s6,x0/13,s7,x6/8,s7,x12/7,s8,x3/11,pm/d,x10/6,s1,x9/8,s8,x6/13,s13,x1/8,s15,x2/0,s7,x9/10,s6,x4/3,s13,x11/0,pj/n,x12/1,pl/b,x15/5,pi/j,x0/8,s5,x5/9,s1,x11/4,pn/p,s6,x8/2,ph/i,s4,x14/1,pn/o,s7,pm/d,x0/10,s2,x1/11,s11,x12/9,s8,x7/11,pb/j,x5/1,s1,x6/4,pi/m,x12/11,ph/l,x6/5,pj/g,x9/3,s2,x7/10,pn/b,x14/15,s1,x8/1,po/h,s5,x9/12,pk/d,x15/3,s4,x2/10,pj/g,x11/4,pl/h,x2/13,s12,x14/5,s4,x13/10,s9,x11/12,pb/k,x1/10,s8,x8/9,pf/h,x1/0,s8,x12/5,s9,pn/k,s3,x14/13,po/d,x6/8,s4,x11/9,pg/m,x12/14,s10,x15/8,s2,x5/11,s5,x14/7,po/i,x3/15,s1,x8/14,pl/k,x11/7,s3,x2/13,s8,x12/3,s8,x6/13,pb/n,x12/4,s15,x13/1,pj/p,x15/10,pi/k,x4/8,pe/p,x12/2,s15,x10/4,pj/a,x11/7,pi/e,x15/8,s11,x0/1,s5,x5/2,pg/j,x1/13,s9,x9/4,pn/h,x8/13,s2,x2/7,s3,x1/0,pl/f,x9/15,s13,x8/4,s11,x7/9,s10,x1/12,s2,x9/5,s4,x2/14,pg/n,x3/5,pm/h,x14/13,s7,x8/6,s6,x5/2,pc/a,x14/15,pd/f,x7/0,pa/o,x4/11,s8,x8/15,pg/h,x0/3,s8,x2/10,s1,x6/8,s14,x4/10,pc/l,x5/1,s3,x4/7,ph/e,x2/10,s4,x1/7,s6,x10/8,s7,pg/d,x4/0,pi/h,x9/11,s1,x14/4,pj/o,x5/7,s5,x10/1,ph/m,x14/4,pg/e,x3/2,pn/k,s4,x0/7,s4,x9/12,s8,x5/1,po/b,x7/0,s2,x14/12,pc/i,x11/7,pg/b,x6/3,s11,x12/4,pd/o,x9/6,s12,x2/3,s6,x4/9,s14,x1/14,s11,x2/11,s14,x12/3,s8,x15/7,s14,x11/9,s3,x12/2,s8,x15/11,s5,x10/2,pa/b,x12/5,s14,x7/11,s9,x1/8,s10,x9/11,s4,x1/3,s2,x15/4,s4,x5/6,pp/f,s5,x9/7,s12,x14/13,pm/h,x2/15,s13,x1/0,s13,x14/4,pg/n,x2/13,po/b,x12/14,pm/h,x4/9,s15,x15/5,pe/n,x3/8,s1,x4/6,s8,x5/7,po/m,x3/4,s4,x14/7,s7,x11/0,pc/i,x13/8,s9,x1/4,pa/n,x10/11,s4,x15/5,pl/k,x13/4,s5,x7/15,s10,x4/0,s8,x12/15,s3,ph/a,s3,x6/0,s14,x3/2,pn/j,x6/12,s7,x14/2,pp/o,x9/0,pm/f,s8,x10/2,s4,x12/5,s12,x13/10,s10,x7/3,s8,x1/2,s13,x14/4,po/e,x5/13,pl/b,x7/1,s14,x11/6,s6,x9/10,pg/k,s6,x6/0,s8,x14/10,pi/f,x5/7,pg/p,x15/12,pe/j,x8/3,s2,x6/2,s7,x3/7,s3,x15/14,s8,x0/12,s2,x6/10,s12,x9/12,s6,x14/1,pi/p,x10/5,s3,x2/14,s2,x4/7,ph/b,x14/8,s6,x0/13,s1,x7/2,s12,x1/4,pi/o,x2/15,s13,x6/9,pl/c,x2/10,pg/e,x3/14,s6,x9/7,s7,x8/13,s13,x3/10,s13,x4/5,s1,x6/3,pk/l,x1/12,s4,x5/9,pf/a,x6/8,pm/e,x1/2,s9,x13/7,s11,x15/10,pa/b,s8,x11/13,s8,x0/12,pk/f,x13/2,s1,x11/10,s5,x0/3,pg/o,x6/13,s2,x2/1,s4,x5/11,s10,x7/2,s15,x8/6,pb/h,x10/9,s6,x0/6,s2,x2/3,s7,x12/11,s10,x9/0,s10,pj/m,x14/11,s8,x0/9,s2,x2/8,pk/p,x15/6,pj/n,x0/14,pc/o,x12/9,s10,x6/10,s10,x5/13,pl/h,x10/2,s13,x5/11,s4,x14/13,s3,x5/12,pk/m,x7/8,pl/e,x2/10,pa/i,s10,x7/14,s8,pd/m,x13/4,s13,x1/2,pj/h,x11/3,s15,x1/7,pg/k,x6/8,s7,x2/10,pj/l,x1/4,s2,x6/0,po/a,x14/8,s8,x3/9,s10,x1/11,s8,x9/0,s9,x2/11,s8,pj/i,x14/10,s13,x9/5,pa/c,x8/4,s2,x3/6,pd/f,x4/8,pj/c,x12/6,s13,x2/15,s10,x11/6,s6,ph/i,s3,x14/2,s4,x15/1,pf/c,x13/9,pk/a,x14/1,s1,x10/2,s2,pp/i,s13,x9/5,pc/k,x7/15,pb/i,x4/13,pk/n,x8/0,s2,x12/10,s9,x9/11,s3,x4/1,s11,x3/6,s11,x4/0,s5,x3/2,po/f,x1/0,pp/j,x6/13,s4,x7/10,pc/f,x8/14,s1,x6/15,s8,x2/14,s5,x1/13,s11,x11/10,s9,x1/3,s8,pm/p,x6/11,s13,x4/2,s14,x12/7,s1,x0/6,s9,x1/7,s13,x15/0,s2,x11/5,s14,x14/0,s15,x5/7,s15,x2/15,s8,x1/3,s4,x14/13,s11,x5/4,pc/e,x1/2,s13,pa/i,x12/3,pe/h,x10/1,pd/g,x8/12,pi/m,x4/3,s7,x13/5,pl/p,x9/0,s12,x13/10,s11,x8/5,pa/g,x3/6,s10,x8/11,s11,x0/13,s10,x15/1,pp/n,x14/13,pl/k,x12/8,pc/m,x3/14,pb/o,x12/1,pg/n,x6/14,s8,x1/10,s6,x9/13,pb/d,x0/1,s13,x15/6,s2,po/f,x13/9,s3,x7/14,pj/p,s9,x4/11,pe/b,x6/12,s7,x13/8,s12,x5/0,s4,x2/1,pi/a,x11/9,pl/k,x3/5,pd/c,x12/13,ph/l,x0/15,po/a,s5,x2/10,pg/f,x7/3,s14,pk/l,x15/5,s2,x11/3,s7,x4/14,s4,x2/7,ph/d,x6/3,s8,pi/n,x8/11,s4,x7/15,s15,x13/12,s7,x6/15,pb/o,x11/2,s3,x0/14,s11,x6/7,ph/i,x12/13,pj/a,x1/9,s2,x0/14,s7,x3/15,pf/m,x5/14,s4,x2/12,s12,x1/4,s6,ph/a,s4,x8/5,s4,x0/14,s14,x10/3,pm/c,x0/7,pk/a,x11/3,s7,x4/13,pb/o,x5/6,s15,x15/13,s3,x4/5,pa/f,x9/11,s7,x0/5,pm/n,x11/7,s14,x3/5,pe/f,s5,x0/6,s2,x8/9,s4,x10/11,s2,x3/12,pg/k,x1/0,pd/f,x13/6,pe/a,s2,x7/12,pm/i,x11/2,pn/o,x8/3,pl/j,x10/12,s11,x5/15,pn/k,x9/0,s15,x15/11,s14,x7/2,pe/i,x0/5,s8,x13/7,pb/g,s3,x2/11,s3,x1/6,s2,x14/10,s11,x13/4,pc/h,s14,x12/15,pk/f,x11/5,s1,x8/13,pa/m,x0/6,pi/b,x1/5,s3,x3/8,pn/m,x0/10,s6,x1/4,s15,x11/3,pc/l,x12/15,pe/m,x1/3,pi/h,s4,x12/13,s12,x14/2,pc/l,x10/0,s2,x7/1,pf/i,x9/5,s13,x4/15,pj/o,s15,x6/5,s15,x1/2,s2,x0/11,s5,x12/6,s14,x0/11,s10,x8/1,s12,pn/f,x6/14,pe/l,x3/15,s14,x13/1,s13,x15/2,s1,x7/14,s5,x0/9,pc/o,x11/13,pe/g,x5/7,s14,x2/12,s4,x13/7,s2,x5/4,s5,x2/12,s11,x7/0,s4,x5/4,pn/d,x8/9,s11,x10/2,po/b,x6/4,s12,x2/11,s9,pg/k,x15/7,pc/j,x13/6,s13,x11/15,pa/m,s6,x7/6,s1,x14/11,pd/g,x2/6,s5,x8/1,pn/p,x5/6,s10,x0/4,s10,x3/11,pg/b,x13/8,s3,x11/12,s5,x0/15,s11,pf/c,s7,x2/9,s7,x0/15,pg/a,x9/2,s8,x14/8,s2,x10/13,ph/i,s10,x8/12,s15,x14/0,s13,x12/11,pd/c,x7/6,s13,x5/15,s4,x6/4,pa/m,x1/15,pe/f,x10/13,ph/k,x3/12,pe/a,x8/1,pg/f,s10,x9/7,pc/h,x0/15,s10,x14/6,pa/n,x13/1,s10,x0/9,s2,x11/3,pf/k,x14/7,pa/g,x8/9,s12,pi/h,x15/1,pl/p,x12/0,pk/a,x13/1,s1,x14/0,s10,x15/13,ph/b,x10/14,pj/n,x7/9,pb/e,x5/15,s12,pc/d,x9/2,pi/j,x12/8,pm/p,x13/1,s11,x10/8,po/d,x11/7,s15,x2/9,s12,x6/8,pl/j,x5/9,pg/p,x8/15,s8,x3/4,pn/d,x13/5,s12,x12/2,pi/m,s10,x7/4,ph/g,x1/6,s12,x3/14,po/a,x10/0,s6,x2/11,pe/d,s5,ph/k,x1/0,pj/e,x4/9,pc/m,x2/8,s12,ph/g,x9/1,pm/p,x8/10,pf/c,s12,x6/15,s3,x2/11,s8,x5/1,pa/n,x11/10,s10,x1/5,pe/h,x12/2,s3,pj/n,s4,x4/14,pg/f,x13/6,s15,x15/14,s15,x13/11,s5,x14/8,s9,x1/2,pp/i,s14,x13/11,s13,x14/7,s11,x13/6,s8,pk/j,x5/11,pm/l,x13/4,s12,x8/10,s2,x6/5,po/e,x13/14,s9,x4/12,s12,x15/3,s14,x8/1,s2,x13/12,s6,pj/p,x1/14,pl/d,x15/4,s15,x7/1,s13,x4/0,s15,x1/14,s7,x10/13,pj/e,s2,x11/3,s10,x9/13,po/b,x15/3,s7,x4/0,pl/e,x14/2,pg/n,x1/11,pb/l,x4/6,pk/f,x14/10,s9,x12/7,s14,x3/10,s12,x12/2,pa/d,x0/15,s12,x11/8,s11,x2/6,s15,x5/13,pk/g,x8/0,pn/l,s8,x2/9,pg/d,x8/10,pe/h,x12/11,pm/j,x9/1,s14,x6/13,s8,x5/14,s3,pi/g,x12/15,s5,x10/4,s15,x3/12,pf/b,x7/5,pj/o,x15/6,pb/l,x3/0,s12,x14/12,pg/e,x13/7,pk/j,x9/10,s14,x3/4,s8,x7/2,s14,x15/8,s9,x9/4,s15,x3/0,pf/d,x8/6,s4,x3/1,pn/c,x7/9,pm/j,x11/0,s1,x10/5,pl/o,s11,x1/6,pa/d,x2/15,pc/f,x6/4,s2,x10/2,s9,x5/3,po/b,x0/6,pm/f,x1/14,pa/i,x10/12,pn/l,x2/0,s4,x15/8,pa/f,x9/7,s2,x15/14,s11,x5/13,s13,x9/15,pj/d,x7/14,s13,pc/l,x2/0,s10,x15/14,pd/o,x4/11,s14,x7/9,s12,x11/8,s3,x2/6,s14,x8/4,s14,x11/6,pe/k,x14/12,s6,pf/g,x5/0,pk/e,x2/11,s14,x6/9,s5,x15/13,s12,x7/6,pi/h,x0/1,s7,x9/3,s12,x11/2,pe/l,x1/6,s5,x9/2,s8,x11/13,pm/j,x5/12,pp/a,x1/13,s15,x8/4,pj/i,x9/1,pl/a,x3/15,s7,x4/9,pf/c,x10/6,pm/b,x0/14,pk/n,x9/7,s2,x3/13,s11,x6/10,pb/g,x3/8,s8,x2/9,s7,x5/13,s12,po/l,x14/8,s1,x15/5,pm/e,s11,x8/10,pk/a,x15/9,s7,x2/1,s3,x7/14,pn/l,x9/1,s15,x15/8,s13,x14/9,s10,x3/2,pa/j,x6/1,s13,x8/14,pb/i,x12/3,s12,x4/5,s6,x8/7,s14,x6/12,s5,po/g,x9/0,s7,pk/l,x1/10,pm/b,x5/6,s2,x15/10,pd/n,x2/7,s13,x15/11,pp/h,x6/1,s14,x2/14,s14,x12/6,s7,x13/10,s10,x7/15,s15,pb/i,x6/14,pa/m,x15/7,s9,x12/11,s4,x15/10,pp/f,x8/12,s13,x2/10,s15,x11/14,s1,x0/7,pc/d,x11/12,po/g,x13/2,pi/h,x6/5,s4,x2/11,s12,x7/8,s6,x0/10,s10,x3/1,pc/b,x5/6,pi/j,x3/11,pf/d,s12,x1/13,pl/h,x14/7,pg/b,x2/6,s15,x1/4,pk/n,x15/2,s3,x14/5,pd/f,x0/9,pk/g,x15/8,s4,x1/12,pm/d,x13/5,pe/b,x0/15,pi/n,x2/8,pk/j,s7,x0/7,s7,x14/10,pe/p,x12/3,s1,x6/2,s2,x3/14,s11,x11/2,pb/h,x4/14,s5,x13/11,s13,x6/1,s12,x5/4,pn/k,s14,x7/3,pj/b,x13/14,pf/e,x15/8,s12,x9/2,pc/p,x10/4,pg/e,x11/13,pp/j,x9/1,s8,x6/10,s11,x0/15,pb/l,x5/10,s10,x11/6,pp/g,x7/2,s14,x6/4,pi/l,x1/11,pn/h,x5/7,s9,x13/12,pj/i,x0/3,ph/b,x2/6,s1,pd/g,x14/11,pk/i,x3/1,pe/f,x5/14,pg/n,s5,x9/11,s5,x3/12,ph/m,x9/14,s6,x3/13,pg/f,x15/10,s5,x3/4,s8,x2/10,pb/h,x5/12,pl/k,x0/7,po/a,x1/4,pf/k,s5,x8/3,s9,x11/14,s5,x4/2,s10,x13/12,s11,pd/e,x6/5,pi/f,x11/7,pc/o,x6/5,pa/j,x7/4,po/g,x6/1,s15,x7/8,s6,x12/10,pk/l,x4/11,s7,x9/1,s14,x2/7,pc/i,x13/8,s3,x14/0,s9,x9/10,s4,x3/4,s2,x12/8,po/k,x1/15,pp/f,x7/13,pm/d,x2/11,s2,x12/5,po/e,x13/1,s4,x5/10,s3,x4/3,s12,x0/14,s14,x11/7,s9,x4/12,s1,x14/7,s9,x10/13,s6,pg/p,x6/1,s1,x5/4,s15,x12/7,s2,x0/6,s5,x7/15,pe/o,x9/14,pa/j,x0/7,s2,x6/12,s15,pb/n,x2/14,pf/l,x4/1,s1,x3/2,s2,x11/10,s4,x15/3,s13,x1/13,pp/j,x4/5,pf/o,s9,x1/12,s14,x3/8,s14,x7/13,pd/p,x15/8,s8,x12/2,s3,x11/7,s11,x14/15,s15,x5/12,s2,pg/e,x15/13,ph/m,x9/3,s14,pf/g,x1/6,s2,x10/15,s10,pn/l,x12/1,s11,x2/14,s14,x9/3,s4,x0/4,pp/a,x14/9,s3,x11/5,s4,x13/0,s4,x2/10,pk/n,x11/6,ph/p,x4/12,s6,pl/b,x3/14,s1,x6/5,s8,x0/2,s9,x14/5,pc/i,x3/9,pd/p,s1,x10/14,pf/e,x6/7,s6,x2/0,s2,x9/7,s2,x11/5,s6,x0/13,s14,x9/5,po/k,x12/11,pj/e,s5,x6/2,po/f,s7,x14/15,pc/g,x5/2,pj/d,x13/1,s12,x3/6,s3,x0/12,s9,x7/6,s11,x3/11,s6,x5/6,s13,x2/12,pk/n,x1/15,s3,x7/2,s11,x12/4,s8,x2/8,s7,x11/7,pi/p,x0/9,s13,x6/15,pc/n,x12/3,ph/b,s12,x13/7,s12,x3/0,pk/c,x6/12,s3,x13/14,s10,x1/0,pe/h,x14/6,s6,x1/9,s4,x7/5,s12,x3/0,s11,x7/11,s10,x10/0,pn/b,x5/7,pl/i,s5,x6/12,s11,x1/7,s14,x4/5,pp/c,s3,x2/13,pj/o,x4/15,pg/b,s8,x13/5,pl/e,x9/3,s11,x10/4,s13,x0/8,s5,pn/c,x10/11,s13,x6/4,pk/j,x12/2,s14,x11/7,s7,x9/0,ph/m,s8,x10/13,s1,x0/14,s7,x15/2,s15,x5/10,pa/n,x12/4,s10,x3/6,s14,x0/10,pb/m,x8/11,s10,x10/5,pk/n,x14/9,s9,x6/0,s2,x8/11,s15,x10/3,s4,x7/12,s2,x14/10,s1,x3/7,s4,x14/15,pm/p,s2,ph/a,x12/2,pm/e,s6,x14/0,pk/n,x10/8,s12,x4/9,s8,x7/15,pe/a,x8/9,pd/h,x4/12,s13,x2/8,s15,x15/4,s7,x14/6,s1,x5/13,s12,x2/3,pj/b,s1,pe/c,s12,x14/12,pg/f,x4/11,s7,x12/2,s8,x8/5,s3,x12/14,s2,x6/5,s3,x14/10,s9,x6/7,pd/b,x2/1,ph/m,x9/12,pn/j,x8/14,pm/o,x9/2,pe/k,x5/4,pp/i,x11/14,s15,x5/1,pk/h,x6/7,s9,x4/10,s5,x15/1,s2,x11/9,pd/f,x10/13,pn/j,x2/4,s15,x7/8,pc/e,x14/4,s8,x2/3,s5,x7/13,pf/n,x4/10,s15,x7/13,s5,x12/3,pc/e,x13/10,s7,x4/12,s1,x2/14,pn/j,x3/8,pm/d,s2,x12/6,pb/f,x4/3,pn/m,x12/10,pj/i,x7/3,po/f,s2,ph/e,x0/6,s11,x4/5,s6,x8/15,pg/k,x13/6,pn/i,x12/5,s15,x9/7,pd/h,x3/5,s11,x0/1,pg/p,x5/4,s5,x9/0,s3,x2/6,ph/k,x7/12,s1,x11/8,pd/b,x15/7,po/n,x3/0,pg/j,s7,x12/5,s11,pm/c,x3/4,s6,x5/2,s4,x7/4,s5,x6/15,s14,x2/5,s11,x11/4,pj/f,x1/8,s1,x3/12,pp/g,x6/9,pj/o,x14/2,ph/b,x15/6,pp/e,x7/2,pk/a,x9/5,s2,x10/15,s8,x7/0,s8,x8/4,s9,x3/5,s10,x9/4,s15,x7/2,s15,x15/9,s2,x3/4,ph/n,x6/5,pp/j,x2/8,pf/l,x6/4,pi/g,x11/12,s5,x14/3,s1,x0/12,s5,x9/2,s1,x8/5,s11,x7/9,s5,x10/3,pm/k,x11/1,s3,x2/6,s1,x3/11,s14,pp/b,x0/4,s5,x15/14,s13,x2/11,pc/j,s14,x7/15,pn/l,x2/3,pe/g,x15/12,s8,x7/9,pj/m,x5/6,s10,x15/8,s9,x11/0,pp/f,x5/1,pb/c,x3/11,ph/l,x8/5,pn/f,x10/0,s10,x4/14,s4,x3/8,s13,pp/j,x2/0,pm/k,x5/9,pf/g,x15/6,s13,x7/9,s13,x11/14,po/h,x10/5,pj/c,x4/8,pn/b,x6/11,pd/h,s3,x12/1,s8,pk/o,x8/5,pe/l,x1/14,s14,x2/0,s12,x9/10,s13,x11/15,pi/d,s1,x12/8,s1,x2/1,s15,x12/0,s13,pl/j,x9/6,pn/f,x12/14,pl/p,x7/15,s9,x12/11,po/b,x7/9,pk/p,x2/12,s11,pb/e,x6/15,pp/c,x5/12,s15,x11/0,s4,x4/10,pf/o,x1/5,s12,x15/12,s10,pm/n,s10,ph/c,x11/10,pg/p,s2,pa/d,s8,x7/13,s7,x12/2,pl/b,x10/0,pg/d,x1/13,s11,x3/9,s5,x2/13,ph/b,s8,x14/5,pg/o,x13/8,pc/i,x3/10,pa/d,x13/11,s5,x8/6,s2,x0/2,s8,x1/11,pb/j,x8/5,ph/k,x1/6,pe/b,s10,x5/12,pi/c,x6/3,s15,pf/l,x11/2,s14,x5/15,s9,x12/9,pi/p,x5/0,pc/e,x13/1,s5,x12/7,pl/d,x2/0,s1,x7/9,s12,x8/10,s14,x0/14,pj/o,x3/2,s2,x1/15,s12,x13/4,s11,x10/6,pd/c,s9,pm/o,x8/5,ph/p,x14/0,s5,x8/15,s4,x10/6,pg/e,x12/2,s1,x4/3,s10,x7/15,s14,x0/5,pd/f,x13/8,s14,x15/9,s9,x11/14,s8,x15/8,s1,x3/6,pl/p,x5/7,s11,x11/10,pe/b,x14/12,pa/l,x10/6,s14,pm/n,x11/12,s8,x10/15,s7,x7/9,pa/h,x3/0,pf/k,s7,x13/12,pj/i,x6/0,s15,x8/2,pd/p,x12/6,pn/m,x8/9,s1,x7/14,pj/b,s12,x5/11,s3,x8/1,s4,pg/m,x13/5,s9,x9/12,s14,x14/6,pd/l,x0/13,pf/h,x10/5,pd/g,x2/11,pi/h,s10,x0/15,pl/g,x4/9,pd/f,x11/8,s5,x6/4,pp/i,x12/1,s11,x7/5,s4,x0/3,s10,x1/5,pe/a,x12/0,pm/b,x1/9,pn/j,x11/3,s11,x0/6,pe/k,x1/3,pa/d,x9/4,ph/n,x6/10,s9,x11/5,po/m,x1/2,s5,x3/0,pj/k,x2/12,s14,x6/4,pn/f,x11/13,pl/o,x7/3,pk/g,x10/8,s3,x4/0,pm/j,x14/5,s5,x8/12,pl/k,x5/13,s2,x0/11,s15,x13/9,pc/i,x2/1,s2,x14/0,s4,x8/12,pl/p,x6/1,pm/j,s4,x14/9,pd/i,x7/11,s1,x0/6,pm/c,x13/8,pi/d,x6/15,pg/k,x3/10,s14,x1/14,s13,x11/4,s4,x5/8,s8,x10/7,s7,x9/0,s2,x3/4,s3,x2/13,pp/m,x12/6,s5,x11/0,pl/i,x6/12,pa/f,x0/2,ph/l,s12,x15/5,s5,x12/3,pm/o,x6/15,s9,x14/3,s2,x5/12,pp/g,x9/13,pj/d,x0/4,s12,x2/14,s11,x5/8,s3,x4/0,s11,po/k,x12/5,s13,x14/2,s15,x12/10,s11,x1/4,s7,x12/9,pa/h,x10/0,pg/p,x7/11,s5,x3/5,s10,x12/1,s11,x13/4,pi/n,x14/10,s10,x1/2,s3,x14/10,s4,x12/2,s11,x4/11,pk/f,x9/5,s11,x2/0,s4,x4/3,ph/m,x7/8,s12,x13/10,s7,x5/4,s15,x6/2,pb/p,x12/1,s11,x4/14,pk/a,s15,x9/10,s10,x15/8,s13,pf/o,x7/3,pp/i,x11/15,s2,x13/0,pd/f,x8/3,s7,x2/10,s5,x4/12,s8,x10/1,pm/i,x15/2,s2,x7/10,pp/h,s4,x3/5,s15,x12/2,s2,x4/14,s13,x15/8,s11,x13/4,pf/l,s11,x2/0,s4,x5/9,pi/o,x3/6,s11,x0/13,pc/m,x14/3,s14,x15/7,s14,x14/10,pe/h,x11/9,s6,x5/13,pa/p,x8/4,pf/i,x6/14,pp/h,x3/13,s1,x15/6,pi/m,x11/7,s5,x10/9,s12,x11/6,s8,x13/9,s10,x3/2,s14,x10/15,pl/j,x2/11,s15,x8/10,s9,x3/5,pm/n,x11/15,pe/c,x8/12,s7,x15/3,pb/l,x1/13,pj/i,x2/7,s10,x9/13,s9,x10/14,s4,x13/8,s13,pm/b,x5/15,s12,x8/2,s15,x14/4,pj/f,x15/12,s8,x14/9,pk/a,x12/4,pd/c,s3,x2/13,pp/l,x12/6,pn/e,x5/14,s14,x0/13,s10,x10/8,ph/p,x14/12,s12,x4/15,s5,pa/n,x3/0,s14,pf/c,x4/5,s3,x8/1,s15,x2/5,s8,x15/3,s3,pp/i,s9,x13/1,s4,x6/14,s10,x12/13,pf/g,x8/1,pc/m,x4/6,s5,pb/n,x3/10,s5,x9/11,s10,x15/10,s13,x0/3,po/d,x4/12,s5,ph/p,x7/8,s7,pe/k,x10/12,s2,x13/14,pp/b,x12/6,s6,x13/4,po/a,x11/0,s5,x14/1,s6,x3/15,s3,x14/2,pj/l,x4/13,s12,x15/5,pi/d,x1/14,s10,x8/13,s2,x6/15,pp/l,x8/12,s13,x5/4,pc/b,x13/2,s6,x5/15,s2,x12/7,s6,pj/g,x8/0,pn/k,x2/9,s6,x5/12,s7,x10/11,pb/i,x2/13,s6,x0/9,s1,x14/8,s14,x2/4,s6,x11/5,pa/g,x2/9,s12,x8/15,ph/k,x1/5,s3,x9/0,pn/a,s10,pc/e,x5/12,pf/g,x9/14,pd/p,x5/1,s1,x13/3,s6,x0/2,s11,x13/15,s7,x10/6,s14,ph/l,x13/4,pi/k,x3/14,s5,x1/15,s13,x7/0,pm/f,x11/4,s6,x9/5,s5,x2/15,po/p,x6/1,pm/c,x7/13,s15,x10/4,s13,x12/6,s10,x4/1,pl/k,x5/14,s11,x9/7,s3,x8/13,s3,x0/12,pd/m,x7/4,s9,x10/2,pn/f,x1/0,s14,x2/12,pc/k,s1,x0/10,pd/e,x8/12,s6,x6/3,s9,x5/2,pi/k,s3,x13/8,pd/m,s11,x1/5,pp/c,s1,x10/12,pn/o,x2/1,s6,x10/4,s13,x0/14,s11,x15/7,s13,x10/6,s12,x7/8,s5,pj/i,x11/4,s1,x7/10,pb/n,x9/0,s10,pf/g,s10,x8/14,s15,x9/4,pk/a,x10/14,s8,x7/5,s9,pb/h,x14/0,pa/o,x2/15,s12,x13/6,pd/m,x8/9,s8,x13/0,s3,x15/7,po/l,x5/0,pf/a,x12/2,s5,x14/7,pm/o,s8,x11/13,s3,x9/12,pi/b,x3/11,s13,x8/0,pp/m,x3/6,pe/l,x0/2,pi/f,x14/3,po/c,x2/13,s10,x6/7,s8,x14/11,s11,x12/1,s9,x15/7,s6,x9/5,pl/n,x12/11,pk/g,x6/3,s14,pn/p,s2,x7/13,pe/m,x8/14,s4,x5/7,s1,x11/4,s11,x8/12,s5,x15/11,pk/n,x10/9,po/i,x14/12,pn/a,x15/3,pe/i,x5/12,pk/h,x11/9,s3,x2/0,s7,x3/10,pm/c,x1/11,s12,x2/3,s9,pf/a,x7/10,s8,x13/5,pm/g,x2/3,s4,x10/6,s15,x9/4,pl/n,s1,x3/7,s2,x12/0,s14,x13/7,s8,x3/4,pp/g,x13/6,pc/m,x5/7,pl/o,x1/3,pn/j,x2/6,pa/l,x10/7,s12,x9/8,pj/b,x10/12,pk/g,x9/14,pn/m,x12/0,pp/b,x14/9,s13,x5/4,s14,x6/9,pl/k,x10/12,s14,x7/13,s4,x9/6,pf/c,x10/7,s10,x2/14,s12,x11/3,s2,x2/14,pj/b,s14,x10/6,s10,x14/11,s5,x1/3,s13,pa/d,x7/15,pi/f,x4/9,s2,pc/e,x6/1,pk/o,x0/14,s10,x9/2,s1,x6/14,s4,x12/4,s6,x3/8,pm/f,s11,x10/11,ph/b,x0/9,s12,x13/15,pf/i,x0/6,s15,x4/14,s11,x9/0,s4,x6/1,s10,x12/10,s9,x6/11,s2,x7/9,s12,x6/10,po/j,x3/13,s11,x15/9,s1,x8/1,s11,x15/5,s11,x4/7,s4,x10/13,pm/h,x3/4,pi/a,x1/13,s6,x8/0,s11,x1/6,s2,x2/8,s10,x5/9,pc/l,x7/0,pb/j,x6/3,s10,x5/7,pe/i,x4/3,pc/h,x9/11,pa/d,x0/12,pj/k,x9/5,s5,x8/10,pi/e,x7/14,s14,x4/8,po/h,x15/9,s10,x13/8,pc/d,x7/14,pm/k,s14,x9/15,s5,pd/e,x2/11,s9,x10/4,po/c,x11/3,s6,x13/4,s7,pg/a,x10/12,pd/b,s1,x15/8,s12,x14/2,s12,x12/0,ph/g,x5/8,s15,x6/2,pk/l,x8/14,s15,x15/12,s10,x6/2,pj/e,s4,x4/3,ph/a,x9/6,s14,pp/b,x12/8,pl/j,x0/14,s15,pg/e,x7/13,s13,x8/6,s3,x10/0,s7,x14/12,pa/l,x10/7,s10,x9/15,s9,x13/3,s1,x4/0,s14,x6/9,po/c,x13/14,pa/e,x2/8,pm/h,x9/13,pf/b,x15/1,pi/k,x2/0,pd/f,s10,x8/7,s10,x10/5,s15,x7/11,pk/m,x12/13,pa/l,x14/6,pj/b,x15/3,ph/m,x11/4,s4,x13/9,pc/p,x7/11,s13,x4/5,s9,x0/9,s11,x10/11,s11,x13/4,pd/a,x14/3,s11,x1/15,s6,x5/11,s9,x7/14,s1,x4/3,s6,x8/12,s14,x6/15,s5,pn/g,x14/3,pi/p,s11,x11/5,pk/j,x13/15,s8,x2/4,pe/p,x10/3,s15,x6/5,pm/f,x14/0,s10,x6/12,s5,x4/9,s15,x6/12,s5,x10/8,pp/e,x14/5,pj/m,x13/15,ph/e,x6/5,s3,x14/7,pj/m,s10,x3/6,s6,pn/b,x10/15,s13,x11/7,pi/j,x14/13,pa/e,x0/15,s12,x7/11,s6,x0/2,s7,x14/15,s11,x13/3,pi/l,x7/12,s10,pf/n,x4/11,s15,x12/9,pk/p,x2/14,s14,x5/1,pg/a,x7/13,s11,x3/2,pl/n,x8/13,pb/e,x6/5,s9,x3/11,s4,pl/c,x4/9,s11,pp/o,x7/15,s15,x0/8,s12,x14/1,s10,x7/8,s15,x9/12,pl/a,x3/14,s5,x6/2,s2,x8/15,pn/j,x11/0,pa/l,x4/12,pn/b,x6/14,s12,x0/15,pd/i,x13/11,po/l,x14/4,s14,x2/7,pc/k,x8/4,s2,pj/a,s1,x10/15,pp/h,s5,x5/9,s9,x13/6,s15,x1/9,pd/c,x0/7,pm/f,x5/13,pp/c,x3/10,s12,x14/4,s9,x2/6,s3,x8/0,s10,pk/f,x5/13,s10,x11/1,pa/j,x10/4,pg/i,x5/8,s7,x6/12,s1,x8/5,s11,x12/2,s2,x4/10,pn/l,x8/0,pa/k,x12/11,s5,x10/9,s6,x7/4,s2,ph/g,x11/14,s5,x12/13,s10,x15/8,s2,x7/12,s1,x9/2,s4,x8/12,pn/e,x6/4,s6,x9/8,po/l,x10/2,s8,x14/13,s5,pc/h,s9,pl/k,x3/0,pg/e,s13,x2/1,s9,x3/6,pd/k,x8/9,pm/l,x3/15,s15,x12/5,s1,x14/13,pb/c,x8/9,s9,pl/a,x14/7,s5,x0/15,pj/g,x9/12,pp/e,x13/2,pa/b,x10/8,s8,x0/2,s4,x1/3,pm/e,x12/7,s7,pn/b,x2/5,pg/e,x12/7,s15,x8/14,pp/l,x3/5,pa/f,x15/6,s7,x1/7,pi/k,x0/11,pd/l,x9/8,pp/b,x1/0,s6,x8/14,pd/a,x11/7,s7,x6/14,s9,x1/8,s4,x2/13,pp/f,x7/0,pl/k,x8/12,pf/j,x4/1,pc/e,x2/7,pk/b,x12/5,s14,x0/13,pi/m,x6/5,pe/p,x7/14,s6,pi/a,x5/8,s8,x13/10,s15,x9/7,s7,x14/1,s2,x3/11,s4,x12/8,pb/h,x11/3,s9,x13/1,s2,x8/10,pg/p,x0/14,s10,x6/5,s6,x2/9,pa/h,x13/7,pb/c,s1,x1/0,s7,x14/6,s1,x13/7,s10,x9/11,pk/o,x7/6,pp/c,x4/9,s9,x15/10,pm/o,x6/5,pn/l,s5,x12/8,s3,x3/0,s13,x10/5,s14,x9/12,s6,x1/13,s8,x2/0,s7,x7/6,s8,x12/11,s2,x6/13,s4,pc/b,s15,x14/9,s1,x3/1,pn/m,s8,x5/2,pe/i,x4/8,s2,x9/6,s11,x12/2,s15,x0/11,pc/m,x7/4,pf/e,x13/11,pg/k,x12/10,s2,x9/13,s12,x1/0,pm/j,s12,x3/2,pb/k,x7/4,pj/f,x5/12,s11,x7/11,pn/g,x13/15,s14,x14/7,pk/p,x6/8,s8,x0/5,pb/i,x9/2,s2,x3/1,pc/j,x10/12,s10,x11/14,s9,x15/6,s8,x12/11,pn/h,x8/9,po/b,x15/3,pj/f,x11/14,s9,x12/6,pi/e,x11/9,s2,x6/3,s10,x4/10,ph/c,x12/14,s10,x4/1,s11,x11/15,pa/j,x9/13,pn/o,x2/12,s6,x11/3,s3,x4/13,pj/d,x2/14,pl/p,x15/6,ph/m,x5/14,s9,x2/11,pp/l,x12/0,s1,x3/11,pi/a,x5/6,pk/c,x10/7,s11,pf/a,x4/2,s3,x14/9,pi/e,x5/2,s4,x1/4,s14,x12/5,ph/f,x10/14,pk/i,x2/4,s3,x8/10,ph/n,x12/4,pj/g,x5/6,pd/n,x9/15,s14,x13/11,ph/o,x9/4,pi/f,x2/7,pl/e,x1/5,pb/d,x7/0,pf/l,x12/5,s14,x10/14,pi/d,x1/13,pa/f,x0/8,pb/n,x7/1,pl/o,x14/2,s12,x1/3,s12,x4/13,s7,x7/0,s15,x6/15,s2,pd/b,x11/7,pl/o,x0/12,s9,x7/3,pb/g,x4/0,pe/a,x6/12,s3,x5/10,ph/p,x15/12,pf/b,x10/5,s1,pg/l,x14/7,s12,x3/9,s2,x15/6,pi/k,x1/7,s4,x12/2,s15,x11/1,pa/d,x5/4,s7,x3/14,pb/h,x5/10,pj/i,x12/8,pe/p,x15/14,s3,x5/1,s5,x14/11,s15,x9/3,pj/b,x1/8,pg/i,x2/14,s9,x0/5,s4,x9/14,s1,x3/4,s3,x1/9,pd/f,x3/14,pj/c,x12/6,pl/f,x10/14,s8,x0/13,pc/m,x5/4,s11,x2/11,pj/o,x5/3,pm/e,x1/13,pg/f,s5,x0/6,pc/a,x4/10,pd/f,x8/14,pa/i,x0/13,pl/m,x7/10,s4,x2/5,s2,x7/1,s4,pa/h,x6/5,pm/l,x2/4,pa/k,x9/1,s11,x7/2,pg/c,x12/5,s9,x1/14,pl/i,x7/9,pp/f,x6/0,ph/i,x15/8,s9,x2/1,pp/e,s6,x7/5,s14,x6/14,pl/j,x1/9,pm/k,x10/14,pf/i,x3/8,pl/a,x2/5,pi/n,x1/3,s9,x15/6,s1,x9/8,ph/j,x1/5,s10,x4/9,s9,x13/2,s13,x6/8,s12,x7/0,s15,x13/12,pa/g,x15/10,pi/l,x8/11,s5,x10/15,pc/k,x6/13,s7,pj/g,x0/2,pa/f,s1,x14/6,s6,ph/g,s8,pd/p,x8/5,pe/i,x15/6,s2,x12/4,pj/h,x5/8,pl/i,x14/6,s7,x10/2,s8,pf/p,x12/1,s5,x13/4,pn/c,x15/0,pf/i,x4/7,po/p,x2/12,s6,x15/7,pn/c,x5/8,pi/e,x1/9,pa/p,x3/15,po/h,x10/1,pm/f,x6/11,s2,x10/4,pb/h,x13/12,pj/a,x11/10,s13,x3/1,s7,x15/11,s14,x4/9,s8,x15/8,pe/o,x1/4,s14,x5/10,s2,x15/0,s11,x8/3,s5,x4/5,s5,pf/m,x12/7,s6,pk/j,x11/9,pm/n,x5/13,ph/o,x2/4,s14,x9/11,s10,pk/j,x7/5,s3,x11/4,s11,x3/13,s7,x15/2,s11,x4/14,pn/d,x7/9,pe/i,x11/14,pp/h,x8/9,s1,x7/5,s8,x10/1,s1,x14/11,pe/g,x0/2,pf/l,x10/5,s1,x14/9,pb/o,s1,x4/1,s1,x12/15,pi/e,x0/11,s2,x13/8,s5,x4/6,s12,pk/h,x3/1,s3,x14/0,pb/c,x8/10,pk/a,x11/4,s5,x8/7,pn/d,x12/14,pm/c,x10/9,s14,x7/12,s6,pb/e,x15/6,s8,x0/5,s2,x14/9,s1,x6/2,s2,x3/13,pl/h,x11/7,s10,x10/15,s9,pb/d,x0/2,pg/j,x8/12,pp/b,x9/14,s10,x3/1,pn/o,s3,x7/9,s1,x11/14,pi/e,x10/12,s7,pc/l,x8/15,s1,x6/5,s3,x14/13,s14,x5/1,ph/k,x0/13,s1,pl/i,x5/3,s2,x7/10,pf/o,s5,x4/14,s5,x2/12,pj/l,x5/8,pi/o,x10/9,pm/e,x7/0,s11,x13/11,pl/i,x12/9,s3,x3/14,pe/f,x11/1,s7,po/b,x7/9,s14,x14/8,s2,x0/13,pd/l,x7/14,pk/m,x5/12,s3,x7/14,pp/h,x1/9,po/d,s7,x12/14,s5,x7/8,s15,x3/4,pp/i,s9,x1/14,s14,x6/5,pf/d,x10/9,pm/n,x8/7,pi/p,x6/15,s1,x10/4,s2,x13/12,s1,x7/10,s11,x3/12,pf/o,x0/9,s15,x7/11,s14,x5/14,s2,x15/7,s6,x8/5,pc/n,x10/15,s11,pl/i,x1/12,s8,x15/7,s3,x13/11,pa/g,x2/6,s14,x10/13,s14,x4/8,pf/c,x2/12,s7,x1/11,pp/g,x9/12,s14,x8/7,pb/f,x3/10,s5,x4/8,pa/g,x3/0,s6,x9/15,pn/e,s12,x10/14,pk/h,x9/6,s4,x1/14,pd/a,x12/15,pp/g,x0/5,s12,x9/4,s5,x14/15,s13,x8/10,s10,x12/2,s8,x15/7,pn/o,x3/13,s15,x14/4,pg/m,x5/7,s2,x11/15,s3,ph/f,x0/13,pp/i,x9/2,s15,x14/8,pe/l,s14,x2/3,s14,x8/4,pb/f,x10/3,s15,x8/13,s12,x12/0,pe/a,x8/1,s2,pf/g,x10/0,pa/p,x15/8,s1,x3/6,pm/b,x11/4,s8,x13/12,pd/p,x5/6,s2,x0/12,s14,x5/7,s15,pk/e,x3/13,pm/j,x1/14,s14,x10/13,pn/g,x0/3,pm/h,x5/2,pf/g,x9/1,pi/h,x4/0,pn/m,x10/13,pj/k,s15,x14/11,pb/a,x12/2,s11,x4/10,pc/i,x13/15,s3,x1/4,s12,x6/5,s14,x12/0,pl/h,s7,x11/4,s12,pb/c,x15/9,s12,x10/1,pn/g,x15/4,s9,x10/8,ph/l,x5/15,s2,pa/c,s5,x14/12,s13,x9/3,pi/f,x6/10,s10,x13/7,s14,x1/14,s5,x3/11,s6,x1/14,s14,x6/15,s5,pg/b,x5/13,pa/k,x14/6,s8,x5/8,s3,x13/15,s4,x3/2,pe/d,x11/14,pm/a,x7/5,s13,x11/13,ph/o,s9,x1/4,s8,pi/m,x9/6,s4,x12/3,ph/c,x13/9,po/n,x12/3,pg/d,x13/6,pa/b,s12,pi/g,x10/15,s11,x9/13,s9,x10/8,s6,x13/6,pj/c,x11/12,pf/k,x9/4,s14,x11/0,s8,x8/4,s5,pi/o,x10/1,s13,x4/2,s9,x14/6,s2,x9/1,pj/c,s3,x2/4,pp/k,x8/1,s10,x6/3,pn/j,x12/14,s5,x8/7,s11,x2/12,s2,x4/5,s6,x11/13,pa/h,x2/5,pf/l,x1/0,s9,x5/14,s12,x10/13,pe/h,x14/9,s7,x5/7,s14,x13/2,s9,x10/3,s12,x4/0,pm/f,x1/5,ph/k,x11/7,pb/c,x3/14,s15,x6/13,s9,x14/15,s10,x7/13,s7,x6/5,pd/h,x12/7,pc/l,x8/0,s13,x13/11,s10,x3/6,ph/m,x8/14,po/j,s9,pf/p,x5/12,s6,x9/14,ph/e,x1/5,s7,x12/6,s10,x15/4,pn/c,s13,x2/6,s12,x3/7,ph/b,x6/8,s7,x10/0,s14,x6/12,s8,x13/4,po/c,x2/3,pl/d,x8/14,s1,x1/4,s7,pg/k,x6/15,s9,x11/8,pm/p,x10/7,pl/c,x13/3,s10,x0/11,pn/i,x13/8,pl/b,x1/2,s11,pp/k,x10/9,s9,x8/1,pf/a,x5/3,pl/n,x6/0,s4,x15/12,s3,x9/4,pd/m,x12/0,s8,po/c,x11/4,pg/l,x12/13,s11,x3/7,pc/e,x4/9,s3,x8/6,s11,x3/5,s13,x1/6,s6,x5/15,s11,x3/14,s6,x5/13,ph/g,x8/9,s8,x11/2,s4,x9/3,s13,x10/6,s4,x13/11,s11,x5/1,pc/n,s10,x12/4,pd/e,x5/2,pk/g,s4,x8/11,s7,x13/4,pp/h,x5/8,s4,x3/13,po/f,x5/11,s7,x7/8,s15,x0/4,s8,x14/2,s14,x10/13,s10,x15/3,s9,x10/1,s11,x9/13,s10,x15/11,s8,x12/5,s3,x8/9,s7,x1/12,s5,x5/13,s15,x0/15,s12,x7/2,s8,x14/5,s6,x11/15,pp/j,s3,x13/5,s14,x10/8,s7,x7/3,s3,x15/2,pd/g,x4/0,s11,x1/2,s12,x10/13,s8,x9/8,s7,x14/12,s15,x1/4,s15,x14/15,s3,x9/4,s15,pk/l,x6/11,s5,x9/12,pp/n,x10/7,s3,x2/5,po/i,x6/10,s10,x11/7,s4,pp/n,s11,x3/9,pj/f,x0/4,s8,x2/5,pb/h,x14/7,s6,pd/i,x2/15,pl/p,x9/8,s7,x7/11,pe/o,x5/10,pk/d,x4/7,s11,x9/6,s11,po/j,x1/2,s3,x15/11,pi/m,x5/0,s1,x12/15,s2,x5/11,pk/g,x7/14,s13,x3/4,pf/n,x13/5,pp/c,s11,x15/10,pn/h,x12/7,s8,x0/3,s4,pf/e,x14/13,s9,pg/p,x11/3,s2,x2/5,s9,x15/9,s8,pj/o,x1/2,s10,x12/11,s5,x2/10,s12,x12/7,pl/k,x13/14,po/f,x10/7,s2,x0/8,s15,x12/13,s4,x7/2,pn/d,s1,pl/c,x14/5,s15,x6/7,s14,x10/9,pd/b,x6/11,pg/m,x13/14,s9,x11/15,pi/l,x1/2,pb/c,x11/4,pg/m,x0/10,pn/k,x8/9,s9,x3/11,pj/f,x14/1,s12,x15/9,s11,x7/2,s6,x8/5,pe/d,x6/4,pa/m,x9/12,s1,x0/13,pn/c,x9/6,ph/p,x0/12,s15,pg/b,s5,x4/9,s14,x13/11,s12,x14/4,s14,x1/2,pm/f,x15/14,pc/k,x9/2,pb/o,x8/12,pj/d,x13/0,s2,x14/3,s8,x7/6,s12,x12/3,pe/i,x8/6,pb/m,x12/4,pc/f,x7/1,s12,x6/11,s6,x4/15,s14,x5/8,s5,x3/12,pb/k,x5/15,pl/n,x12/1,pg/o,x5/3,s15,x2/10,pi/a,x4/11,ph/b,x7/10,pp/a,x3/6,pl/g,x8/2,pa/b,x14/10,pe/k,s2,x4/15,pf/g,x3/1,s2,x0/8,s6,x5/14,s4,x2/0,s8,x14/4,s3,x10/0,s13,x8/9,pd/a,x10/1,s12,x0/6,pn/h,x12/4,s2,x11/14,s4,x6/8,s4,x9/5,s13,x7/6,s4,x5/9,s8,pe/b,x1/8,s5,x4/6,s7,x14/11,po/n,x15/9,s6,x11/10,pc/m,x12/4,pi/a,x10/3,pj/b,x12/0,s3,pl/c,x9/10,s10,x4/13,pi/p,x10/5,s9,x7/12,s4,x8/0,s11,x7/4,s3,pa/o,x2/12,pl/k,x13/6,pg/h,s11,x0/15,s2,x3/6,s14,pa/f,x8/0,s10,x9/13,s6,x8/11,pe/b,x10/3,pj/i,x13/5,s3,x12/10,pp/f,x4/15,pd/g,x13/0,pc/e,x8/14,s4,x10/7,pd/a,x5/2,s3,x4/6,pi/h,x0/14,s5,x2/10,s15,x13/15,pg/o,x10/5,s7,x9/1,pm/k,x3/10,pa/p,s8,x7/6,s12,x0/8,s11,x15/7,s12,x1/14,pb/o,x10/3,s15,pa/k,s5,x8/6,s14,x1/7,s3,x3/6,s5,x12/8,s13,x9/14,s8,x2/1,s12,x6/7,s15,x9/2,s1,x15/3,s11,x1/13,s15,x0/14,pj/o,x4/3,s8,x7/5,s1,x9/4,s15,x0/1,s10,x15/6,pc/m,x14/0,pd/h,x6/2,pk/f,x11/8,po/i,x9/6,pk/e,x5/13,pc/o,x3/6,pf/d,x7/11,s12,x2/6,s1,x0/7,s15,x10/12,pi/m,x3/6,s7,x8/15,s1,x1/11,s11,x10/14,s6,x8/6,s2,x11/10,pg/p,x13/6,pd/o,x10/5,s14,x6/4,s9,pi/n,x8/2,s12,x10/9,s15,x5/15,pd/f,s3,x11/13,pi/l,x8/12,po/h,x4/13,pj/n,x12/10,s2,x6/11,s7,x12/13,s11,x9/14,s8,x2/11,pe/b,x14/8,pf/d,s1,x9/13,s10,x10/11,po/g,x13/5,pa/n,x7/11,pm/c,x15/4,s5,po/i,x1/13,s4,x9/3,s10,x2/5,s1,x4/1,pl/k,x6/5,s12,x15/13,s4,x7/9,pf/a,x12/13,s13,pd/l,x8/5,pa/j,s10,pp/b,x9/14,s8,x13/7,s1,x12/8,pe/l,s1,x5/11,s9,x7/0,s5,x5/4,s9,x10/6,pp/m,x15/1,s9,x9/6,s7,x13/10,po/k,x15/12,pa/c,x8/6,pb/d,s10,pl/i,x13/4,pb/p,x12/1,s3,x13/9,s6,x12/8,s11,x6/0,s1,pg/h,x10/2,pl/d,x4/6,s12,x9/15,s6,x3/14,s4,x7/2,s9,x8/12,ph/b,x9/1,s11,x3/14,s12,x8/13,s6,x14/7,s6,x8/9,s15,x0/3,s3,x11/8,pg/e,s3,x0/6,pi/h,s5,x14/3,s2,x4/9,pb/j,x10/5,s2,x1/13,s13,x7/2,s9,x3/9,pl/n,x12/4,s10,x14/10,s11,pk/a,x6/12,s13,x3/14,s11,x13/8,pj/f,x14/11,s12,pc/k,s3,x2/0,pl/d,x3/1,s8,x11/8,s10,x6/9,s4,x4/3,s9,x2/9,s12,x12/13,s4,x7/9,s11,x1/3,s4,x7/0,pb/c,x12/10,s4,x7/6,s1,x11/2,s8,x5/3,s9,x7/2,s13,x10/1,s15,x3/8,s2,x1/11,s13,x4/13,s2,x10/9,s2,x1/12,s9,x5/4,pg/e,x11/7,pi/l,x1/3,pn/j,x2/7,pd/c,x10/6,pk/a,x5/12,s15,x2/11,pm/i,x3/1,s3,x4/5,pe/j,x13/15,s6,x7/2,s14,x13/12,s6,x14/3,pk/p,x6/5,s15,x12/0,pf/h,x9/1,s5,x7/2,pk/c,x8/10,s14,x12/9,pg/n,x7/10,s12,x8/1,pe/o,x15/10,pc/k,x14/6,s10,x3/12,pe/l,x5/4,pf/h,x13/1,pe/p,x9/6,pf/h,x12/10,pb/e,x4/7,s8,x5/10,s5,x9/6,s1,x12/4,s11,x13/1,pa/o,x4/0,pp/l,x12/14,s9,x11/3,s9,x10/9,s2,x15/14,s8,x8/0,s4,x13/2,s14,x9/3,s5,x4/8,pk/n,x11/14,pi/f,x15/10,pj/o,x8/1,s7,x6/15,pd/n,x0/9,s15,x4/14,pg/e,x3/10,pi/o,x15/13,pe/n,x1/9,s7,x2/10,s7,x0/6,s12,x8/2,s7,x9/6,s8,pc/m,x12/1,s7,x14/7,pi/n,x1/13,pd/o,x14/15,pp/i,x0/10,s10,x8/14,s4,x15/5,pe/a,x8/13,ph/o,s14,x2/1,s1,x8/14,pa/d,x12/13,s8,x5/3,pk/l,x11/7,pj/a,x0/12,pf/m,x10/3,s9,x12/8,s6,x1/3,s13,x15/11,pk/c,x12/6,s15,x8/11,s4,x15/13,pg/b,x11/4,s11,x0/6,s11,x5/4,pk/m,x0/3,s11,x13/9,pe/h,x15/2,s5,x1/10,pj/i,x12/15,s13,x7/5,s4,ph/p,x3/12,pd/e,s3,x6/1,s8,x15/14,s1,pi/k,x4/3,s12,x15/6,s1,x5/13,pf/g,x11/14,s3,x3/9,ph/j,s7,x12/13,po/m,s1,x10/9,pb/a,x7/6,s4,x2/12,s15,x4/13,s9,x1/2,ph/j,s9,x10/3,s8,x13/2,s7,x15/4,s14,x8/7,s5,x1/6,s4,x3/13,s2,x4/8,pa/f,x3/6,s6,x5/15,s9,x8/10,s4,x3/0,s5,x14/7,s5,x4/1,s9,x10/5,pi/k,x3/7,s1,x4/9,pl/e,s12,x10/2,s7,x7/4,pc/b,x14/2,s7,x10/6,pp/d,x9/0,pk/j,x15/8,s12,x11/1,po/h,x13/5,s4,x15/4,s1,x14/3,s9,x2/7,s3,x15/9,s3,x1/14,s2,x9/8,pn/a,x12/7,s2,x0/4,pe/b,x9/7,po/k,s1,x5/6,s5,x10/1,pb/e,x11/12,s14,x0/10,s13,x4/11,s15,x0/8,pg/p,x13/3,s10,pd/o,x11/5,pl/c,x9/6,s8,x7/11,s2,x10/3,s7,x8/5,s13,x6/2,s3,x0/7,s3,x4/11,s12,x6/9,pf/n,x14/10,s9,x11/7,s13,x0/12,s2,x3/6,s12,x9/5,s8,x15/3,pk/m,x13/6,s6,pp/f,s13,x9/3,pc/j,x7/10,pa/d,x2/9,pn/p,s14,x11/6,pm/j,x8/0,s1,x14/4,s14,x10/12,s2,x13/7,s2,x3/1,s10,x15/13,ph/c,x9/11,po/b,x15/3,s13,x6/5,pe/k,x8/15,ph/d,x5/12,s15,x7/14,pf/b,s13,x13/3,s8,x6/5,pp/g,x3/7,s9,x11/6,pk/l,x14/1,s12,x0/13,pd/j,s8,pb/i,x14/4,pc/h,x2/6,pl/g,x11/12,s13,x13/1,pd/p,x14/7,s1,x5/4,s12,x12/9,s1,x1/4,s14,x8/0,po/c,x7/13,pn/j,s9,x8/10,s5,x2/13,s8,ph/a,x4/6,s11,x8/0,s12,po/g,x13/6,pf/k,s2,x10/15,s5,x0/8,s1,x1/2,po/g,x7/12,s4,x15/6,s5,x9/1,s14,x5/12,pl/m,x8/0,s10,pk/b,x5/11,pm/g,x13/3,pa/o,x4/7,s14,x8/15,s8,pj/f,x14/0,s9,x13/15,s15,x9/11,s6,x6/7,s5,x4/8,s8,x9/15,s15,x14/2,pb/n,x7/13,pj/e,x4/15,s5,x12/13,s12,x0/5,pi/a,x6/13,s13,x5/12,s3,x4/13,s1,x5/6,s15,x7/15,s10,x2/4,s9,x0/5,pn/d,s10,x9/3,s4,x12/1,s13,x8/7,pp/g,x0/2,pa/e,x9/5,po/n,s11,x0/8,pa/e,x15/3,pm/c,x11/2,s10,x5/6,s3,x7/3,s11,x8/13,s3,x5/6,s6,x13/7,pk/e,s14,x14/3,s10,x11/2,s9,pl/a,x6/9,s11,x7/0,pn/i,s7,x11/13,pp/j,x1/7,s4,pl/a,s3,pg/k,x0/6,pp/e,x5/10,s10,x6/13,s8,x4/12,s5,x8/14,pk/o,x4/13,s13,x5/12,pe/f,s6,x7/1,s6,x15/11,s11,x8/12,pa/m,x9/7,s9,x1/15,pn/p,x8/12,pe/m,x1/7,s5,x12/5,s9,pk/f,x8/15,s6,x3/13,s5,x4/9,pp/g,x13/0,pk/e,x8/9,s12,x13/10,s15,x11/12,pc/a,s5,ph/e,x13/9,s3,x1/2,pb/f,s10,x12/0,s14,x11/9,s14,x6/3,s14,x8/15,s14,x1/2,s13,x5/10,s5,x0/12,pj/g,x1/5,pb/k,s12,x0/11,pf/p,x5/12,s15,x10/2,s4,x15/0,s10,x3/4,s14,x2/7,s2,pd/m,x0/6,s10,x3/13,s4,x5/0,pb/e,x12/4,pd/h,x3/13,s1,x2/5,pe/c,x0/6,ph/n
\ No newline at end of file
diff --git a/problems/day16.html b/problems/day16.html
new file mode 100644 (file)
index 0000000..e1d775b
--- /dev/null
@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html lang="en-us">
+<head>
+<meta charset="utf-8"/>
+<title>Day 16 - Advent of Code 2017</title>
+<!--[if lt IE 9]><script src="/static/html5.js"></script><![endif]-->
+<link href='//fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
+<link rel="stylesheet" type="text/css" href="/static/style.css?12"/>
+<link rel="stylesheet alternate" type="text/css" href="/static/highcontrast.css?0" title="High Contrast"/>
+<link rel="shortcut icon" href="/favicon.ico?2"/>
+</head><!--
+
+
+
+
+Oh, hello!  Funny seeing you here.
+
+I appreciate your enthusiasm, but you aren't going to find much down here.
+There certainly aren't clues to any of the puzzles.  The best surprises don't
+even appear in the source until you unlock them for real.
+
+Please be careful with automated requests; I'm not Google, and I can only take
+so much traffic.  Please be considerate so that everyone gets to play.
+
+If you're curious about how Advent of Code works, it's running on some custom
+Perl code. Other than a few integrations (auth, analytics, ads, social media),
+I built the whole thing myself, including the design, animations, prose, and
+all of the puzzles.
+
+The puzzles probably took the longest; the easiest ones took an hour or two
+each, but the harder ones took 4-5 hours, and a few even longer than that. A
+lot of effort went into building this thing - I hope you're enjoying playing it
+as much as I enjoyed making it for you!
+
+If you'd like to hang out, I'm @ericwastl on Twitter.
+
+- Eric Wastl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-->
+<body>
+<header><div><h1 class="title-global"><a href="/">Advent of Code</a></h1><nav><ul><li><a href="/2017/about">[About]</a></li><li><a href="/2017/support">[AoC++]</a></li><li><a href="/2017/events">[Events]</a></li><li><a href="/2017/settings">[Settings]</a></li><li><a href="/2017/auth/logout">[Log Out]</a></li></ul></nav><div class="user">Neil Smith <span class="supporter">(AoC++)</span> <span class="star-count">32*</span></div></div><div><h1 class="title-event">&nbsp;&nbsp;&nbsp;<span class="title-event-wrap">$year=</span><a href="/2017">2017</a><span class="title-event-wrap">;</span></h1><nav><ul><li><a href="/2017">[Calendar]</a></li><li><a href="/2017/leaderboard">[Leaderboard]</a></li><li><a href="/2017/stats">[Stats]</a></li><li><a href="/2017/sponsors">[Sponsors]</a></li></ul></nav></div></header>
+
+<div id="sidebar">
+<div id="sponsor"><div class="quiet">Our <a href="/2017/sponsors">sponsors</a> help make Advent of Code possible:</div><p><a href="http://kx.com/" target="_blank" onclick="if(ga)ga('send','event','sponsor','click',this.href);" rel="noopener">Kx Systems</a> - kdb+, the in-memory time series technology standard</p></div>
+<div id="ad">
+<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+<!-- Advent of Code Wide Skyscraper -->
+<ins class="adsbygoogle"
+     style="display:inline-block;width:160px;height:600px"
+     data-ad-client="ca-pub-9420604735624631"
+     data-ad-slot="8014013294"></ins>
+<script>
+(adsbygoogle = window.adsbygoogle || []).push({});
+</script>
+</div><!--/ad-->
+</div><!--/sidebar-->
+
+<main>
+<article class="day-desc"><h2>--- Day 16: Permutation Promenade ---</h2><p>You come upon a very unusual sight; a group of programs here appear to be <a href="https://www.youtube.com/watch?v=lyZQPjUT5B4&t=53">dancing</a>.</p>
+<p>There are sixteen programs in total, named <code>a</code> through <code>p</code>. They start by standing in a <span title="This is called a 'newline'.">line</span>: <code>a</code> stands in position <code>0</code>, <code>b</code> stands in position <code>1</code>, and so on until <code>p</code>, which stands in position <code>15</code>.</p>
+<p>The programs' <em>dance</em> consists of a sequence of <em>dance moves</em>:</p>
+<ul>
+<li><em>Spin</em>, written <code>sX</code>, makes <code>X</code> programs move from the end to the front, but maintain their order otherwise. (For example, <code>s3</code> on <code>abcde</code> produces <code>cdeab</code>).</li>
+<li><em>Exchange</em>, written <code>xA/B</code>, makes the programs at positions <code>A</code> and <code>B</code> swap places.</li>
+<li><em>Partner</em>, written <code>pA/B</code>, makes the programs named <code>A</code> and <code>B</code> swap places.</li>
+</ul>
+<p>For example, with only five programs standing in a line (<code>abcde</code>), they could do the following dance:</p>
+<ul>
+<li><code>s1</code>, a spin of size <code>1</code>: <code>eabcd</code>.</li>
+<li><code>x3/4</code>, swapping the last two programs: <code>eabdc</code>.</li>
+<li><code>pe/b</code>, swapping programs <code>e</code> and <code>b</code>: <code>baedc</code>.</li>
+</ul>
+<p>After finishing their dance, the programs end up in order <code>baedc</code>.<p>
+<p>You watch the dance for a while and record their dance moves (your puzzle input). <em>In what order are the programs standing</em> after their dance?</p>
+</article>
+<p>Your puzzle answer was <code>giadhmkpcnbfjelo</code>.</p><article class="day-desc"><h2>--- Part Two ---</h2><p>Now that you're starting to get a feel for the dance moves, you turn your attention to <em>the dance as a whole</em>.</p>
+<p>Keeping the positions they ended up in from their previous dance, the programs perform it again and again: including the first dance, a total of <em>one billion</em> (<code>1000000000</code>) times.</p>
+<p>In the example above, their second dance would <em>begin</em> with the order <code>baedc</code>, and use the same dance moves:</p>
+<ul>
+<li><code>s1</code>, a spin of size <code>1</code>: <code>cbaed</code>.</li>
+<li><code>x3/4</code>, swapping the last two programs: <code>cbade</code>.</li>
+<li><code>pe/b</code>, swapping programs <code>e</code> and <code>b</code>: <code>ceadb</code>.</li>
+</ul>
+<p><em>In what order are the programs standing</em> after their billion dances?</p>
+</article>
+<p>Your puzzle answer was <code>njfgilbkcoemhpad</code>.</p><p class="day-success">Both parts of this puzzle are complete! They provide two gold stars: **</p>
+<p>At this point, you should <a href="/2017">return to your advent calendar</a> and try another puzzle.</p>
+<p>If you still want to see it, you can <a href="16/input" target="_blank">get your puzzle input</a>.</p>
+<p>You can also <span class="share">[Share<span class="share-content">on
+  <a href="https://twitter.com/intent/tweet?text=I%27ve+completed+%22Permutation+Promenade%22+%2D+Day+16+%2D+Advent+of+Code+2017&amp;url=http%3A%2F%2Fadventofcode%2Ecom%2F2017%2Fday%2F16&amp;related=ericwastl&amp;hashtags=AdventOfCode" target="_blank">Twitter</a>
+  <a href="https://plus.google.com/share?url=http%3A%2F%2Fadventofcode%2Ecom%2F2017%2Fday%2F16" target="_blank">Google+</a>
+  <a href="http://www.reddit.com/submit?url=http%3A%2F%2Fadventofcode%2Ecom%2F2017%2Fday%2F16&amp;title=I%27ve+completed+%22Permutation+Promenade%22+%2D+Day+16+%2D+Advent+of+Code+2017" target="_blank">Reddit</a
+></span>]</span> this puzzle.</p>
+</main>
+
+<!-- ga -->
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-69522494-1', 'auto');
+ga('send', 'pageview');
+</script>
+<!-- /ga -->
+</body>
+</html>
\ No newline at end of file
diff --git a/src/advent16/advent16.hs b/src/advent16/advent16.hs
new file mode 100644 (file)
index 0000000..dc24552
--- /dev/null
@@ -0,0 +1,124 @@
+{-# LANGUAGE NegativeLiterals #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies #-}
+
+import Prelude hiding ((++))
+import Data.Text (Text)
+import qualified Data.Text as T
+import qualified Data.Text.IO as TIO
+
+import Text.Megaparsec hiding (State)
+import qualified Text.Megaparsec.Lexer as L
+import Text.Megaparsec.Text (Parser)
+import qualified Control.Applicative as CA
+
+import Control.Monad.State.Lazy
+import Control.Monad.Reader
+
+import Data.Vector.Unboxed ((!), (++), (//))
+import qualified Data.Vector.Unboxed as V
+
+import qualified Data.IntMap as M
+
+
+data Step =   Spin Int
+            | Exchange Int Int
+            | Partner Char Char
+            deriving (Show, Eq)
+
+type Dancers = V.Vector Char
+
+type DanceHistory = M.IntMap Dancers
+
+type HistoryRecorder = ReaderT [Step] (State DanceHistory) DanceHistory
+
+
+startingDancers :: Dancers
+startingDancers = V.fromList ['a'..'p'] 
+
+emptyHistory :: DanceHistory
+emptyHistory = M.singleton 0 startingDancers
+
+
+main :: IO ()
+main = do 
+        text <- TIO.readFile "data/advent16.txt"
+        let instrs = successfulParse text
+        print $ part1 instrs
+        print $ part2 instrs
+
+
+part1 :: [Step] -> Dancers
+part1 instrs = evalState (runDance instrs) startingDancers
+
+part2 instrs = (M.!) history (1000000000 `rem` M.size history)
+    where history = evalState (runReaderT (recordDance startingDancers) instrs) emptyHistory
+
+
+runDance :: [Step] -> State Dancers Dancers
+runDance [] = do dancers <- get
+                 return dancers
+runDance (step:steps) = 
+    do dancers <- get
+       let dancers' = case step of
+                        Spin n -> spin n dancers
+                        Exchange a b -> exchange a b dancers
+                        Partner a b -> partner a b dancers
+       put dancers'
+       runDance steps
+
+
+recordDance :: Dancers -> HistoryRecorder
+recordDance dancers = 
+    do
+        history <- get
+        instrs <- ask
+        let dancers' = evalState (runDance instrs) dancers
+        if dancers' == startingDancers && (not (history == emptyHistory))
+        then return history
+        else do 
+--                 instrs <- ask
+--                 let dancers' = evalState (runDance instrs) dancers
+                let history' = M.insert (M.size history) dancers' history
+                put history'
+                recordDance dancers'
+
+spin :: Int -> Dancers -> Dancers
+spin n dancers = back ++ front
+    where (front, back) = V.splitAt n' dancers
+          n' = V.length dancers - n
+
+exchange :: Int -> Int -> Dancers -> Dancers
+exchange a b dancers = dancers // [(a, dancers!b), (b, dancers!a)]
+
+partner :: Char -> Char -> Dancers -> Dancers
+partner a b dancers = exchange a' b' dancers
+    where a' = V.head $ V.elemIndices a dancers
+          b' = V.head $ V.elemIndices b dancers
+
+
+sc :: Parser ()
+sc = L.space (skipSome spaceChar) CA.empty CA.empty
+
+-- lexeme  = L.lexeme sc
+
+int :: Parser Int
+int = read <$> some digitChar
+
+symb = L.symbol sc
+comma = char ','
+dancer = oneOf ['a'..'p']
+
+stepsP = stepP `sepBy` comma
+stepP = (try spinP) <|> (try exchangeP) <|> partnerP
+
+spinP = Spin <$> (symb "s" *> int)
+exchangeP = Exchange <$> (symb "x" *> int) <*> (symb "/" *> int)
+partnerP = Partner <$> (symb "p" *> dancer) <*> (symb "/" *> dancer)
+
+successfulParse :: Text -> [Step]
+successfulParse input = 
+        case parse stepsP "input" input of
+                Left  _error -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err
+                Right steps  -> steps
\ No newline at end of file
diff --git a/src/advent16/advent16.ipynb b/src/advent16/advent16.ipynb
new file mode 100644 (file)
index 0000000..3e5a9db
--- /dev/null
@@ -0,0 +1,413 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "{-# LANGUAGE NegativeLiterals #-}\n",
+    "{-# LANGUAGE FlexibleContexts #-}\n",
+    "{-# LANGUAGE OverloadedStrings #-}\n",
+    "{-# LANGUAGE TypeFamilies #-}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import Prelude hiding ((++))\n",
+    "import Data.Text (Text)\n",
+    "import qualified Data.Text as T\n",
+    "import qualified Data.Text.IO as TIO\n",
+    "\n",
+    "import Text.Megaparsec hiding (State)\n",
+    "import qualified Text.Megaparsec.Lexer as L\n",
+    "import Text.Megaparsec.Text (Parser)\n",
+    "import qualified Control.Applicative as CA\n",
+    "\n",
+    "import Control.Monad.State.Lazy\n",
+    "import Control.Monad.Reader\n",
+    "\n",
+    "import Data.Vector.Unboxed ((!), (++), (//))\n",
+    "import qualified Data.Vector.Unboxed as V\n",
+    "\n",
+    "import qualified Data.IntMap as M"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "data Step =   Spin Int\n",
+    "            | Exchange Int Int\n",
+    "            | Partner Char Char\n",
+    "            deriving (Show, Eq)\n",
+    "\n",
+    "type Dancers = V.Vector Char\n",
+    "\n",
+    "type DanceHistory = M.IntMap Dancers\n",
+    "\n",
+    "type HistoryRecorder = ReaderT [Step] (State DanceHistory) DanceHistory"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"abcdefghijklmnop\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "['a'..'p']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sc :: Parser ()\n",
+    "sc = L.space (skipSome spaceChar) CA.empty CA.empty\n",
+    "\n",
+    "lexeme  = L.lexeme sc\n",
+    "\n",
+    "int :: Parser Int\n",
+    "int = read <$> some digitChar\n",
+    "\n",
+    "symb = L.symbol sc\n",
+    "comma = char ','\n",
+    "dancer = oneOf ['a'..'p']\n",
+    "\n",
+    "stepsP = stepP `sepBy` comma\n",
+    "\n",
+    "\n",
+    "stepP = (try spinP) <|> (try exchangeP) <|> partnerP\n",
+    "\n",
+    "spinP = Spin <$> (symb \"s\" *> int)\n",
+    "exchangeP = Exchange <$> (symb \"x\" *> int) <*> (symb \"/\" *> int)\n",
+    "partnerP = Partner <$> (symb \"p\" *> dancer) <*> (symb \"/\" *> dancer)\n",
+    "\n",
+    "successfulParse :: Text -> [Step]\n",
+    "successfulParse input = \n",
+    "        case parse stepsP \"input\" input of\n",
+    "                Left  err   -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err\n",
+    "                Right steps -> steps"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[Partner 'o' 'k',Exchange 4 0,Spin 12,Exchange 7 6]"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "successfulParse $ T.pack \"po/k,x4/0,s12,x7/6\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "startingDancers :: Dancers\n",
+    "startingDancers = V.fromList ['a'..'p'] "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"abcdefghijklmnop\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "startingDancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "spin :: Int -> Dancers -> Dancers\n",
+    "spin n dancers = back ++ front\n",
+    "    where (front, back) = V.splitAt n' dancers\n",
+    "          n' = V.length dancers - n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"nopabcdefghijklm\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "spin 3 startingDancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "exchange :: Int -> Int -> Dancers -> Dancers\n",
+    "exchange a b dancers = dancers // [(a, dancers!b), (b, dancers!a)]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"aocdefghijklmnbp\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "exchange 1 14 startingDancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "partner :: Char -> Char -> Dancers -> Dancers\n",
+    "partner a b dancers = exchange a' b' dancers\n",
+    "    where a' = V.head $ V.elemIndices a dancers\n",
+    "          b' = V.head $ V.elemIndices b dancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"abkdefghijclmnop\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "partner 'c' 'k' startingDancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "runDance :: [Step] -> State Dancers Dancers\n",
+    "runDance [] = do dancers <- get\n",
+    "                 return dancers\n",
+    "runDance (step:steps) = \n",
+    "    do dancers <- get\n",
+    "       let dancers' = case step of\n",
+    "                        Spin n -> spin n dancers\n",
+    "                        Exchange a b -> exchange a b dancers\n",
+    "                        Partner a b -> partner a b dancers\n",
+    "       put dancers'\n",
+    "       runDance steps\n",
+    "                       "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "part1 :: [Step] -> Dancers\n",
+    "part1 instrs = evalState (runDance instrs) startingDancers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "main :: IO ()\n",
+    "main = do \n",
+    "        text <- TIO.readFile \"../../data/advent16.txt\"\n",
+    "        let instrs = successfulParse text\n",
+    "        print $ part1 instrs\n",
+    "--         print $ part2 instrs"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"giadhmkpcnbfjelo\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "main"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "emptyHistory :: DanceHistory\n",
+    "emptyHistory = M.singleton 0 startingDancers\n",
+    "-- emptyHistory = M.empty"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "recordDance :: Dancers -> HistoryRecorder\n",
+    "recordDance dancers = \n",
+    "    do\n",
+    "        history <- get\n",
+    "        instrs <- ask\n",
+    "        let dancers' = evalState (runDance instrs) dancers\n",
+    "        if dancers' == startingDancers && (not (history == emptyHistory))\n",
+    "        then return history\n",
+    "        else do \n",
+    "--                 instrs <- ask\n",
+    "--                 let dancers' = evalState (runDance instrs) dancers\n",
+    "                let history' = M.insert (M.size history) dancers' history\n",
+    "                put history'\n",
+    "                recordDance dancers'"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 63,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "part2 instrs = (M.!) history (1000000000 `rem` M.size history)\n",
+    "    where history = evalState (runReaderT (recordDance startingDancers) instrs) emptyHistory"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 64,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "main :: IO ()\n",
+    "main = do \n",
+    "        text <- TIO.readFile \"../../data/advent16.txt\"\n",
+    "        let instrs = successfulParse text\n",
+    "        print $ part1 instrs\n",
+    "        print $ part2 instrs"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 65,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "\"giadhmkpcnbfjelo\"\n",
+       "\"njfgilbkcoemhpad\""
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "main"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Haskell",
+   "language": "haskell",
+   "name": "haskell"
+  },
+  "language_info": {
+   "codemirror_mode": "ihaskell",
+   "file_extension": ".hs",
+   "name": "haskell",
+   "version": "8.0.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}