Hex Artifact Content
Not logged in

Artifact 6dcf84ee0fbfd6820636108b45dc9315793260cb:


0000: 23 69 6e 63 6c 75 64 65 20 3c 69 6f 73 74 72 65  #include <iostre
0010: 61 6d 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 73  am>..#include <s
0020: 73 74 72 65 61 6d 3e 0d 0a 23 69 6e 63 6c 75 64  stream>..#includ
0030: 65 20 3c 69 6f 6d 61 6e 69 70 3e 0d 0a 23 69 6e  e <iomanip>..#in
0040: 63 6c 75 64 65 20 3c 76 65 63 74 6f 72 3e 0d 0a  clude <vector>..
0050: 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67  #include <string
0060: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 6d 61 70  >..#include <map
0070: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 73 65 74  >..#include <set
0080: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 61 6c 67  >..#include <alg
0090: 6f 72 69 74 68 6d 3e 0d 0a 23 69 6e 63 6c 75 64  orithm>..#includ
00a0: 65 20 3c 6e 75 6d 65 72 69 63 3e 0d 0a 23 69 6e  e <numeric>..#in
00b0: 63 6c 75 64 65 20 3c 69 74 65 72 61 74 6f 72 3e  clude <iterator>
00c0: 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 66 75 6e 63  ..#include <func
00d0: 74 69 6f 6e 61 6c 3e 0d 0a 23 69 6e 63 6c 75 64  tional>..#includ
00e0: 65 20 3c 63 6f 6d 70 6c 65 78 3e 0d 0a 23 69 6e  e <complex>..#in
00f0: 63 6c 75 64 65 20 3c 71 75 65 75 65 3e 0d 0a 23  clude <queue>..#
0100: 69 6e 63 6c 75 64 65 20 3c 73 74 61 63 6b 3e 0d  include <stack>.
0110: 0a 23 69 6e 63 6c 75 64 65 20 3c 63 6d 61 74 68  .#include <cmath
0120: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 63 61 73  >..#include <cas
0130: 73 65 72 74 3e 0d 0a 75 73 69 6e 67 20 6e 61 6d  sert>..using nam
0140: 65 73 70 61 63 65 20 73 74 64 3b 0d 0a 74 79 70  espace std;..typ
0150: 65 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 4c  edef long long L
0160: 4c 3b 0d 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67  L;..typedef long
0170: 20 64 6f 75 62 6c 65 20 4c 44 3b 0d 0a 74 79 70   double LD;..typ
0180: 65 64 65 66 20 63 6f 6d 70 6c 65 78 3c 64 6f 75  edef complex<dou
0190: 62 6c 65 3e 20 43 4d 50 3b 0d 0a 0d 0a 73 74 61  ble> CMP;....sta
01a0: 74 69 63 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e  tic const unsign
01b0: 65 64 20 4d 4f 44 56 41 4c 20 3d 20 31 30 30 30  ed MODVAL = 1000
01c0: 30 30 30 30 30 39 3b 0d 0a 73 74 72 75 63 74 20  000009;..struct 
01d0: 6d 69 6e 74 0d 0a 7b 0d 0a 09 75 6e 73 69 67 6e  mint..{...unsign
01e0: 65 64 20 76 61 6c 3b 0d 0a 09 6d 69 6e 74 28 29  ed val;...mint()
01f0: 3a 76 61 6c 28 30 29 7b 7d 0d 0a 09 6d 69 6e 74  :val(0){}...mint
0200: 28 69 6e 74 20 20 20 20 20 20 78 29 3a 76 61 6c  (int      x):val
0210: 28 78 25 4d 4f 44 56 41 4c 29 20 7b 7d 0d 0a 09  (x%MODVAL) {}...
0220: 6d 69 6e 74 28 75 6e 73 69 67 6e 65 64 20 78 29  mint(unsigned x)
0230: 3a 76 61 6c 28 78 25 4d 4f 44 56 41 4c 29 20 7b  :val(x%MODVAL) {
0240: 7d 0d 0a 09 6d 69 6e 74 28 4c 4c 20 20 20 20 20  }...mint(LL     
0250: 20 20 78 29 3a 76 61 6c 28 78 25 4d 4f 44 56 41    x):val(x%MODVA
0260: 4c 29 20 7b 7d 0d 0a 7d 3b 0d 0a 6d 69 6e 74 26  L) {}..};..mint&
0270: 20 6f 70 65 72 61 74 6f 72 2b 3d 28 6d 69 6e 74   operator+=(mint
0280: 26 20 78 2c 20 6d 69 6e 74 20 79 29 20 7b 20 72  & x, mint y) { r
0290: 65 74 75 72 6e 20 78 20 3d 20 78 2e 76 61 6c 2b  eturn x = x.val+
02a0: 79 2e 76 61 6c 3b 20 7d 0d 0a 6d 69 6e 74 26 20  y.val; }..mint& 
02b0: 6f 70 65 72 61 74 6f 72 2d 3d 28 6d 69 6e 74 26  operator-=(mint&
02c0: 20 78 2c 20 6d 69 6e 74 20 79 29 20 7b 20 72 65   x, mint y) { re
02d0: 74 75 72 6e 20 78 20 3d 20 78 2e 76 61 6c 2d 79  turn x = x.val-y
02e0: 2e 76 61 6c 2b 4d 4f 44 56 41 4c 3b 20 7d 0d 0a  .val+MODVAL; }..
02f0: 6d 69 6e 74 26 20 6f 70 65 72 61 74 6f 72 2a 3d  mint& operator*=
0300: 28 6d 69 6e 74 26 20 78 2c 20 6d 69 6e 74 20 79  (mint& x, mint y
0310: 29 20 7b 20 72 65 74 75 72 6e 20 78 20 3d 20 4c  ) { return x = L
0320: 4c 28 78 2e 76 61 6c 29 2a 79 2e 76 61 6c 3b 20  L(x.val)*y.val; 
0330: 7d 0d 0a 6d 69 6e 74 20 6f 70 65 72 61 74 6f 72  }..mint operator
0340: 2b 28 6d 69 6e 74 20 78 2c 20 6d 69 6e 74 20 79  +(mint x, mint y
0350: 29 20 7b 20 72 65 74 75 72 6e 20 78 2b 3d 79 3b  ) { return x+=y;
0360: 20 7d 0d 0a 6d 69 6e 74 20 6f 70 65 72 61 74 6f   }..mint operato
0370: 72 2d 28 6d 69 6e 74 20 78 2c 20 6d 69 6e 74 20  r-(mint x, mint 
0380: 79 29 20 7b 20 72 65 74 75 72 6e 20 78 2d 3d 79  y) { return x-=y
0390: 3b 20 7d 0d 0a 6d 69 6e 74 20 6f 70 65 72 61 74  ; }..mint operat
03a0: 6f 72 2a 28 6d 69 6e 74 20 78 2c 20 6d 69 6e 74  or*(mint x, mint
03b0: 20 79 29 20 7b 20 72 65 74 75 72 6e 20 78 2a 3d   y) { return x*=
03c0: 79 3b 20 7d 0d 0a 0d 0a 6d 69 6e 74 20 50 4f 57  y; }....mint POW
03d0: 28 6d 69 6e 74 20 78 2c 20 4c 4c 20 65 29 20 7b  (mint x, LL e) {
03e0: 20 6d 69 6e 74 20 76 3d 31 3b 20 66 6f 72 28 3b   mint v=1; for(;
03f0: 65 3b 78 2a 3d 78 2c 65 3e 3e 3d 31 29 20 69 66  e;x*=x,e>>=1) if
0400: 28 65 26 31 29 20 76 2a 3d 78 3b 20 72 65 74 75  (e&1) v*=x; retu
0410: 72 6e 20 76 3b 20 7d 0d 0a 6d 69 6e 74 26 20 6f  rn v; }..mint& o
0420: 70 65 72 61 74 6f 72 2f 3d 28 6d 69 6e 74 26 20  perator/=(mint& 
0430: 78 2c 20 6d 69 6e 74 20 79 29 20 7b 20 72 65 74  x, mint y) { ret
0440: 75 72 6e 20 78 20 2a 3d 20 50 4f 57 28 79 2c 20  urn x *= POW(y, 
0450: 4d 4f 44 56 41 4c 2d 32 29 3b 20 7d 0d 0a 6d 69  MODVAL-2); }..mi
0460: 6e 74 20 6f 70 65 72 61 74 6f 72 2f 28 6d 69 6e  nt operator/(min
0470: 74 20 78 2c 20 6d 69 6e 74 20 79 29 20 7b 20 72  t x, mint y) { r
0480: 65 74 75 72 6e 20 78 2f 3d 79 3b 20 7d 0d 0a 0d  eturn x/=y; }...
0490: 0a 76 65 63 74 6f 72 3c 6d 69 6e 74 3e 20 46 41  .vector<mint> FA
04a0: 43 5f 28 31 2c 31 29 3b 0d 0a 6d 69 6e 74 20 46  C_(1,1);..mint F
04b0: 41 43 28 4c 4c 20 6e 29 20 7b 20 77 68 69 6c 65  AC(LL n) { while
04c0: 28 20 46 41 43 5f 2e 73 69 7a 65 28 29 3c 3d 6e  ( FAC_.size()<=n
04d0: 20 29 20 46 41 43 5f 2e 70 75 73 68 5f 62 61 63   ) FAC_.push_bac
04e0: 6b 28 20 46 41 43 5f 2e 62 61 63 6b 28 29 2a 46  k( FAC_.back()*F
04f0: 41 43 5f 2e 73 69 7a 65 28 29 20 29 3b 20 72 65  AC_.size() ); re
0500: 74 75 72 6e 20 46 41 43 5f 5b 6e 5d 3b 20 7d 0d  turn FAC_[n]; }.
0510: 0a 0d 0a 6d 69 6e 74 20 50 28 4c 4c 20 6e 2c 20  ...mint P(LL n, 
0520: 4c 4c 20 6b 29 20 7b 0d 0a 09 72 65 74 75 72 6e  LL k) {...return
0530: 20 6b 3c 30 20 7c 7c 20 6e 3c 6b 20 3f 20 30 20   k<0 || n<k ? 0 
0540: 3a 20 46 41 43 28 6e 29 20 2f 20 46 41 43 28 6e  : FAC(n) / FAC(n
0550: 2d 6b 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 20 54 65  -k);..}....// Te
0560: 73 74 65 64 3a 20 53 52 4d 20 34 36 38 20 4c 76  sted: SRM 468 Lv
0570: 32 0d 0a 74 65 6d 70 6c 61 74 65 3c 74 79 70 65  2..template<type
0580: 6e 61 6d 65 20 54 3e 0d 0a 73 74 72 75 63 74 20  name T>..struct 
0590: 44 50 33 78 0d 0a 7b 0d 0a 09 69 6e 74 20 4e 31  DP3x..{...int N1
05a0: 2c 20 4e 32 2c 20 4e 33 3b 0d 0a 09 76 65 63 74  , N2, N3;...vect
05b0: 6f 72 3c 54 3e 20 64 61 74 61 3b 0d 0a 09 44 50  or<T> data;...DP
05c0: 33 78 28 69 6e 74 2c 20 69 6e 74 20 4e 32 2c 20  3x(int, int N2, 
05d0: 69 6e 74 20 4e 33 2c 20 63 6f 6e 73 74 20 54 26  int N3, const T&
05e0: 20 74 20 3d 20 54 28 29 29 0d 0a 09 09 3a 20 4e   t = T())....: N
05f0: 31 28 32 29 2c 20 4e 32 28 4e 32 29 2c 20 4e 33  1(2), N2(N2), N3
0600: 28 4e 33 29 2c 20 64 61 74 61 28 4e 31 2a 4e 32  (N3), data(N1*N2
0610: 2a 4e 33 2c 20 74 29 20 7b 20 61 73 73 65 72 74  *N3, t) { assert
0620: 28 64 61 74 61 2e 73 69 7a 65 28 29 2a 73 69 7a  (data.size()*siz
0630: 65 6f 66 28 54 29 20 3c 20 28 31 3c 3c 32 36 29  eof(T) < (1<<26)
0640: 29 3b 20 7d 0d 0a 09 54 26 20 6f 70 65 72 61 74  ); }...T& operat
0650: 6f 72 28 29 28 69 6e 74 20 69 31 2c 20 69 6e 74  or()(int i1, int
0660: 20 69 32 2c 20 69 6e 74 20 69 33 29 0d 0a 09 09   i2, int i3)....
0670: 7b 20 69 31 26 3d 31 3b 20 72 65 74 75 72 6e 20  { i1&=1; return 
0680: 64 61 74 61 5b 20 28 28 69 31 2a 4e 32 29 2b 69  data[ ((i1*N2)+i
0690: 32 29 2a 4e 33 2b 69 33 20 5d 3b 20 7d 0d 0a 09  2)*N3+i3 ]; }...
06a0: 76 6f 69 64 20 73 77 61 70 28 44 50 33 78 26 20  void swap(DP3x& 
06b0: 72 68 73 29 0d 0a 09 09 7b 20 64 61 74 61 2e 73  rhs)....{ data.s
06c0: 77 61 70 28 72 68 73 2e 64 61 74 61 29 3b 20 7d  wap(rhs.data); }
06d0: 0d 0a 7d 3b 0d 0a 0d 0a 74 65 6d 70 6c 61 74 65  ..};....template
06e0: 3c 74 79 70 65 6e 61 6d 65 20 54 3e 0d 0a 73 74  <typename T>..st
06f0: 72 75 63 74 20 44 50 33 0d 0a 7b 0d 0a 09 69 6e  ruct DP3..{...in
0700: 74 20 4e 31 2c 20 4e 32 2c 20 4e 33 3b 0d 0a 09  t N1, N2, N3;...
0710: 76 65 63 74 6f 72 3c 54 3e 20 64 61 74 61 3b 0d  vector<T> data;.
0720: 0a 09 44 50 33 28 69 6e 74 20 4e 31 2c 20 69 6e  ..DP3(int N1, in
0730: 74 20 4e 32 2c 20 69 6e 74 20 4e 33 2c 20 63 6f  t N2, int N3, co
0740: 6e 73 74 20 54 26 20 74 20 3d 20 54 28 29 29 0d  nst T& t = T()).
0750: 0a 09 09 3a 20 4e 31 28 4e 31 29 2c 20 4e 32 28  ...: N1(N1), N2(
0760: 4e 32 29 2c 20 4e 33 28 4e 33 29 2c 20 64 61 74  N2), N3(N3), dat
0770: 61 28 4e 31 2a 4e 32 2a 4e 33 2c 20 74 29 20 7b  a(N1*N2*N3, t) {
0780: 20 61 73 73 65 72 74 28 64 61 74 61 2e 73 69 7a   assert(data.siz
0790: 65 28 29 2a 73 69 7a 65 6f 66 28 54 29 3c 28 31  e()*sizeof(T)<(1
07a0: 3c 3c 32 36 29 29 3b 20 7d 0d 0a 09 54 26 20 6f  <<26)); }...T& o
07b0: 70 65 72 61 74 6f 72 28 29 28 69 6e 74 20 69 31  perator()(int i1
07c0: 2c 20 69 6e 74 20 69 32 2c 20 69 6e 74 20 69 33  , int i2, int i3
07d0: 29 0d 0a 09 09 7b 20 72 65 74 75 72 6e 20 64 61  )....{ return da
07e0: 74 61 5b 20 28 28 69 31 2a 4e 32 29 2b 69 32 29  ta[ ((i1*N2)+i2)
07f0: 2a 4e 33 2b 69 33 20 5d 3b 20 7d 0d 0a 09 76 6f  *N3+i3 ]; }...vo
0800: 69 64 20 73 77 61 70 28 44 50 33 26 20 72 68 73  id swap(DP3& rhs
0810: 29 0d 0a 09 09 7b 20 64 61 74 61 2e 73 77 61 70  )....{ data.swap
0820: 28 72 68 73 2e 64 61 74 61 29 3b 20 7d 0d 0a 7d  (rhs.data); }..}
0830: 3b 0d 0a 0d 0a 63 6c 61 73 73 20 43 6f 6c 6f 72  ;....class Color
0840: 66 75 6c 42 75 69 6c 64 69 6e 67 20 7b 20 70 75  fulBuilding { pu
0850: 62 6c 69 63 3a 0d 0a 09 69 6e 74 20 63 6f 75 6e  blic:...int coun
0860: 74 28 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67  t(vector <string
0870: 3e 20 63 6f 6c 6f 72 31 2c 20 76 65 63 74 6f 72  > color1, vector
0880: 20 3c 73 74 72 69 6e 67 3e 20 63 6f 6c 6f 72 32   <string> color2
0890: 2c 20 69 6e 74 20 4c 29 0d 0a 09 7b 0d 0a 09 09  , int L)...{....
08a0: 73 74 72 69 6e 67 20 43 31 20 3d 20 61 63 63 75  string C1 = accu
08b0: 6d 75 6c 61 74 65 28 63 6f 6c 6f 72 31 2e 62 65  mulate(color1.be
08c0: 67 69 6e 28 29 2c 20 63 6f 6c 6f 72 31 2e 65 6e  gin(), color1.en
08d0: 64 28 29 2c 20 73 74 72 69 6e 67 28 29 29 3b 0d  d(), string());.
08e0: 0a 09 09 73 74 72 69 6e 67 20 43 32 20 3d 20 61  ...string C2 = a
08f0: 63 63 75 6d 75 6c 61 74 65 28 63 6f 6c 6f 72 32  ccumulate(color2
0900: 2e 62 65 67 69 6e 28 29 2c 20 63 6f 6c 6f 72 32  .begin(), color2
0910: 2e 65 6e 64 28 29 2c 20 73 74 72 69 6e 67 28 29  .end(), string()
0920: 29 3b 0d 0a 09 09 69 6e 74 20 4e 20 3d 20 43 31  );....int N = C1
0930: 2e 73 69 7a 65 28 29 3b 0d 0a 09 09 76 65 63 74  .size();....vect
0940: 6f 72 3c 69 6e 74 3e 20 43 3b 0d 0a 09 09 66 6f  or<int> C;....fo
0950: 72 28 69 6e 74 20 69 3d 30 3b 20 69 3c 4e 3b 20  r(int i=0; i<N; 
0960: 2b 2b 69 29 0d 0a 09 09 09 43 2e 70 75 73 68 5f  ++i).....C.push_
0970: 62 61 63 6b 28 74 6f 5f 69 28 43 31 5b 69 5d 29  back(to_i(C1[i])
0980: 2a 35 32 20 2b 20 74 6f 5f 69 28 43 32 5b 69 5d  *52 + to_i(C2[i]
0990: 29 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 73 6f  ));....return so
09a0: 6c 76 65 28 43 2c 20 4c 29 2e 76 61 6c 3b 0d 0a  lve(C, L).val;..
09b0: 09 7d 0d 0a 0d 0a 09 73 74 61 74 69 63 20 69 6e  .}.....static in
09c0: 74 20 74 6f 5f 69 28 63 68 61 72 20 63 29 0d 0a  t to_i(char c)..
09d0: 09 7b 0d 0a 09 09 72 65 74 75 72 6e 20 28 27 41  .{....return ('A
09e0: 27 3c 3d 63 20 26 26 20 63 3c 3d 27 5a 27 20 3f  '<=c && c<='Z' ?
09f0: 20 63 2d 27 41 27 20 3a 20 63 2d 27 61 27 2b 32   c-'A' : c-'a'+2
0a00: 36 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 6d 69 6e 74  6);...}.....mint
0a10: 20 73 6f 6c 76 65 28 76 65 63 74 6f 72 3c 69 6e   solve(vector<in
0a20: 74 3e 26 20 43 2c 20 69 6e 74 20 4c 29 0d 0a 09  t>& C, int L)...
0a30: 7b 0d 0a 09 09 69 6e 74 20 4e 20 3d 20 43 2e 73  {....int N = C.s
0a40: 69 7a 65 28 29 3b 0d 0a 0d 0a 09 09 44 50 33 78  ize();......DP3x
0a50: 3c 6d 69 6e 74 3e 20 64 70 28 4c 2b 31 2c 20 4e  <mint> dp(L+1, N
0a60: 2c 20 4e 2b 31 29 3b 20 0d 0a 09 09 66 6f 72 28  , N+1); ....for(
0a70: 69 6e 74 20 63 3d 31 3b 20 63 3c 3d 4c 3b 20 2b  int c=1; c<=L; +
0a80: 2b 63 29 0d 0a 09 09 7b 0d 0a 09 09 09 66 6f 72  +c)....{.....for
0a90: 28 69 6e 74 20 78 3d 30 3b 20 78 3c 4e 3b 20 2b  (int x=0; x<N; +
0aa0: 2b 78 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 64  +x).....{......d
0ab0: 70 28 63 2c 78 2c 31 29 20 3d 20 28 63 3d 3d 31  p(c,x,1) = (c==1
0ac0: 20 3f 20 31 20 3a 20 30 29 3b 0d 0a 09 09 09 09   ? 1 : 0);......
0ad0: 66 6f 72 28 69 6e 74 20 69 3d 32 3b 20 69 3c 3d  for(int i=2; i<=
0ae0: 78 2b 31 3b 20 2b 2b 69 29 0d 0a 09 09 09 09 7b  x+1; ++i)......{
0af0: 0d 0a 09 09 09 09 09 6d 69 6e 74 20 73 75 6d 20  .......mint sum 
0b00: 3d 20 30 3b 0d 0a 09 09 09 09 09 66 6f 72 28 69  = 0;.......for(i
0b10: 6e 74 20 79 3d 30 3b 20 79 3c 78 3b 20 2b 2b 79  nt y=0; y<x; ++y
0b20: 29 20 7b 0d 0a 09 09 09 09 09 09 69 6e 74 20 63  ) {........int c
0b30: 63 20 3d 20 28 43 5b 78 5d 3d 3d 43 5b 79 5d 20  c = (C[x]==C[y] 
0b40: 3f 20 63 20 3a 20 63 2d 31 29 3b 0d 0a 09 09 09  ? c : c-1);.....
0b50: 09 09 09 66 6f 72 28 69 6e 74 20 6b 3d 31 3b 20  ...for(int k=1; 
0b60: 6b 3c 3d 79 2b 31 20 26 26 20 6b 3c 3d 69 2d 31  k<=y+1 && k<=i-1
0b70: 3b 20 2b 2b 6b 29 0d 0a 09 09 09 09 09 09 09 73  ; ++k).........s
0b80: 75 6d 20 2b 3d 20 64 70 28 63 63 2c 79 2c 6b 29  um += dp(cc,y,k)
0b90: 20 2a 20 50 28 79 2b 31 2d 6b 2c 20 69 2d 31 2d   * P(y+1-k, i-1-
0ba0: 6b 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09  k);.......}.....
0bb0: 09 09 64 70 28 63 2c 78 2c 69 29 20 3d 20 73 75  ..dp(c,x,i) = su
0bc0: 6d 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d  m;......}.....}.
0bd0: 0a 09 09 7d 0d 0a 0d 0a 09 09 6d 69 6e 74 20 61  ...}......mint a
0be0: 6e 73 20 3d 20 30 3b 0d 0a 09 09 66 6f 72 28 69  ns = 0;....for(i
0bf0: 6e 74 20 69 3d 31 3b 20 69 3c 3d 4e 3b 20 2b 2b  nt i=1; i<=N; ++
0c00: 69 29 0d 0a 09 09 09 61 6e 73 20 2b 3d 20 64 70  i).....ans += dp
0c10: 28 4c 2c 20 4e 2d 31 2c 20 69 29 20 2a 20 50 28  (L, N-1, i) * P(
0c20: 4e 2d 69 2c 20 4e 2d 69 29 3b 0d 0a 09 09 72 65  N-i, N-i);....re
0c30: 74 75 72 6e 20 61 6e 73 3b 0d 0a 09 7d 0d 0a 7d  turn ans;...}..}
0c40: 3b 0d 0a 0d 0a 2f 2f 20 42 45 47 49 4e 20 43 55  ;....// BEGIN CU
0c50: 54 20 48 45 52 45 0d 0a 23 69 6e 63 6c 75 64 65  T HERE..#include
0c60: 20 3c 63 74 69 6d 65 3e 0d 0a 64 6f 75 62 6c 65   <ctime>..double
0c70: 20 73 74 61 72 74 5f 74 69 6d 65 3b 20 73 74 72   start_time; str
0c80: 69 6e 67 20 74 69 6d 65 72 28 29 0d 0a 20 7b 20  ing timer().. { 
0c90: 6f 73 74 72 69 6e 67 73 74 72 65 61 6d 20 6f 73  ostringstream os
0ca0: 3b 20 6f 73 20 3c 3c 20 22 20 28 22 20 3c 3c 20  ; os << " (" << 
0cb0: 69 6e 74 28 28 63 6c 6f 63 6b 28 29 2d 73 74 61  int((clock()-sta
0cc0: 72 74 5f 74 69 6d 65 29 2f 43 4c 4f 43 4b 53 5f  rt_time)/CLOCKS_
0cd0: 50 45 52 5f 53 45 43 2a 31 30 30 30 29 20 3c 3c  PER_SEC*1000) <<
0ce0: 20 22 20 6d 73 65 63 29 22 3b 20 72 65 74 75 72   " msec)"; retur
0cf0: 6e 20 6f 73 2e 73 74 72 28 29 3b 20 7d 0d 0a 74  n os.str(); }..t
0d00: 65 6d 70 6c 61 74 65 3c 74 79 70 65 6e 61 6d 65  emplate<typename
0d10: 20 54 3e 20 6f 73 74 72 65 61 6d 26 20 6f 70 65   T> ostream& ope
0d20: 72 61 74 6f 72 3c 3c 28 6f 73 74 72 65 61 6d 26  rator<<(ostream&
0d30: 20 6f 73 2c 20 63 6f 6e 73 74 20 76 65 63 74 6f   os, const vecto
0d40: 72 3c 54 3e 26 20 76 29 0d 0a 20 7b 20 6f 73 20  r<T>& v).. { os 
0d50: 3c 3c 20 22 7b 20 22 3b 0d 0a 20 20 20 66 6f 72  << "{ ";..   for
0d60: 28 74 79 70 65 6e 61 6d 65 20 76 65 63 74 6f 72  (typename vector
0d70: 3c 54 3e 3a 3a 63 6f 6e 73 74 5f 69 74 65 72 61  <T>::const_itera
0d80: 74 6f 72 20 69 74 3d 76 2e 62 65 67 69 6e 28 29  tor it=v.begin()
0d90: 3b 20 69 74 21 3d 76 2e 65 6e 64 28 29 3b 20 2b  ; it!=v.end(); +
0da0: 2b 69 74 29 0d 0a 20 20 20 6f 73 20 3c 3c 20 27  +it)..   os << '
0db0: 5c 22 27 20 3c 3c 20 2a 69 74 20 3c 3c 20 27 5c  \"' << *it << '\
0dc0: 22 27 20 3c 3c 20 28 69 74 2b 31 3d 3d 76 2e 65  "' << (it+1==v.e
0dd0: 6e 64 28 29 20 3f 20 22 22 20 3a 20 22 2c 20 22  nd() ? "" : ", "
0de0: 29 3b 20 6f 73 20 3c 3c 20 22 20 7d 22 3b 20 72  ); os << " }"; r
0df0: 65 74 75 72 6e 20 6f 73 3b 20 7d 0d 0a 76 6f 69  eturn os; }..voi
0e00: 64 20 76 65 72 69 66 79 5f 63 61 73 65 28 63 6f  d verify_case(co
0e10: 6e 73 74 20 69 6e 74 26 20 45 78 70 65 63 74 65  nst int& Expecte
0e20: 64 2c 20 63 6f 6e 73 74 20 69 6e 74 26 20 52 65  d, const int& Re
0e30: 63 65 69 76 65 64 29 20 7b 0d 0a 20 62 6f 6f 6c  ceived) {.. bool
0e40: 20 6f 6b 20 3d 20 28 45 78 70 65 63 74 65 64 20   ok = (Expected 
0e50: 3d 3d 20 52 65 63 65 69 76 65 64 29 3b 0d 0a 20  == Received);.. 
0e60: 69 66 28 6f 6b 29 20 63 65 72 72 20 3c 3c 20 22  if(ok) cerr << "
0e70: 50 41 53 53 45 44 22 20 3c 3c 20 74 69 6d 65 72  PASSED" << timer
0e80: 28 29 20 3c 3c 20 65 6e 64 6c 3b 20 20 65 6c 73  () << endl;  els
0e90: 65 20 7b 20 63 65 72 72 20 3c 3c 20 22 46 41 49  e { cerr << "FAI
0ea0: 4c 45 44 22 20 3c 3c 20 74 69 6d 65 72 28 29 20  LED" << timer() 
0eb0: 3c 3c 20 65 6e 64 6c 3b 0d 0a 20 63 65 72 72 20  << endl;.. cerr 
0ec0: 3c 3c 20 22 5c 74 6f 3a 20 5c 22 22 20 3c 3c 20  << "\to: \"" << 
0ed0: 45 78 70 65 63 74 65 64 20 3c 3c 20 27 5c 22 27  Expected << '\"'
0ee0: 20 3c 3c 20 65 6e 64 6c 20 3c 3c 20 22 5c 74 78   << endl << "\tx
0ef0: 3a 20 5c 22 22 20 3c 3c 20 52 65 63 65 69 76 65  : \"" << Receive
0f00: 64 20 3c 3c 20 27 5c 22 27 20 3c 3c 20 65 6e 64  d << '\"' << end
0f10: 6c 3b 20 7d 20 7d 0d 0a 23 64 65 66 69 6e 65 20  l; } }..#define 
0f20: 43 41 53 45 28 4e 29 20 7b 63 65 72 72 20 3c 3c  CASE(N) {cerr <<
0f30: 20 22 54 65 73 74 20 43 61 73 65 20 23 22 20 3c   "Test Case #" <
0f40: 3c 20 4e 20 3c 3c 20 22 2e 2e 2e 22 20 3c 3c 20  < N << "..." << 
0f50: 66 6c 75 73 68 3b 20 73 74 61 72 74 5f 74 69 6d  flush; start_tim
0f60: 65 3d 63 6c 6f 63 6b 28 29 3b 0d 0a 23 64 65 66  e=clock();..#def
0f70: 69 6e 65 20 45 4e 44 09 20 76 65 72 69 66 79 5f  ine END. verify_
0f80: 63 61 73 65 28 5f 2c 20 43 6f 6c 6f 72 66 75 6c  case(_, Colorful
0f90: 42 75 69 6c 64 69 6e 67 28 29 2e 63 6f 75 6e 74  Building().count
0fa0: 28 63 6f 6c 6f 72 31 2c 20 63 6f 6c 6f 72 32 2c  (color1, color2,
0fb0: 20 4c 29 29 3b 7d 0d 0a 69 6e 74 20 6d 61 69 6e   L));}..int main
0fc0: 28 29 7b 0d 0a 0d 0a 43 41 53 45 28 30 29 0d 0a  (){....CASE(0)..
0fd0: 09 73 74 72 69 6e 67 20 63 6f 6c 6f 72 31 5f 5b  .string color1_[
0fe0: 5d 20 3d 20 7b 22 61 61 62 61 22 7d 3b 0d 0a 09  ] = {"aaba"};...
0ff0: 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67    vector <string
1000: 3e 20 63 6f 6c 6f 72 31 28 63 6f 6c 6f 72 31 5f  > color1(color1_
1010: 2c 20 63 6f 6c 6f 72 31 5f 2b 73 69 7a 65 6f 66  , color1_+sizeof
1020: 28 63 6f 6c 6f 72 31 5f 29 2f 73 69 7a 65 6f 66  (color1_)/sizeof
1030: 28 2a 63 6f 6c 6f 72 31 5f 29 29 3b 20 0d 0a 09  (*color1_)); ...
1040: 73 74 72 69 6e 67 20 63 6f 6c 6f 72 32 5f 5b 5d  string color2_[]
1050: 20 3d 20 7b 22 61 61 61 61 22 7d 3b 0d 0a 09 20   = {"aaaa"};... 
1060: 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e   vector <string>
1070: 20 63 6f 6c 6f 72 32 28 63 6f 6c 6f 72 32 5f 2c   color2(color2_,
1080: 20 63 6f 6c 6f 72 32 5f 2b 73 69 7a 65 6f 66 28   color2_+sizeof(
1090: 63 6f 6c 6f 72 32 5f 29 2f 73 69 7a 65 6f 66 28  color2_)/sizeof(
10a0: 2a 63 6f 6c 6f 72 32 5f 29 29 3b 20 0d 0a 09 69  *color2_)); ...i
10b0: 6e 74 20 4c 20 3d 20 33 3b 20 0d 0a 09 69 6e 74  nt L = 3; ...int
10c0: 20 5f 20 3d 20 36 3b 20 0d 0a 45 4e 44 0d 0a 43   _ = 6; ..END..C
10d0: 41 53 45 28 31 29 0d 0a 09 73 74 72 69 6e 67 20  ASE(1)...string 
10e0: 63 6f 6c 6f 72 31 5f 5b 5d 20 3d 20 7b 22 61 61  color1_[] = {"aa
10f0: 62 61 22 7d 3b 0d 0a 09 20 20 76 65 63 74 6f 72  ba"};...  vector
1100: 20 3c 73 74 72 69 6e 67 3e 20 63 6f 6c 6f 72 31   <string> color1
1110: 28 63 6f 6c 6f 72 31 5f 2c 20 63 6f 6c 6f 72 31  (color1_, color1
1120: 5f 2b 73 69 7a 65 6f 66 28 63 6f 6c 6f 72 31 5f  _+sizeof(color1_
1130: 29 2f 73 69 7a 65 6f 66 28 2a 63 6f 6c 6f 72 31  )/sizeof(*color1
1140: 5f 29 29 3b 20 0d 0a 09 73 74 72 69 6e 67 20 63  _)); ...string c
1150: 6f 6c 6f 72 32 5f 5b 5d 20 3d 20 7b 22 61 61 62  olor2_[] = {"aab
1160: 61 22 7d 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20  a"};...  vector 
1170: 3c 73 74 72 69 6e 67 3e 20 63 6f 6c 6f 72 32 28  <string> color2(
1180: 63 6f 6c 6f 72 32 5f 2c 20 63 6f 6c 6f 72 32 5f  color2_, color2_
1190: 2b 73 69 7a 65 6f 66 28 63 6f 6c 6f 72 32 5f 29  +sizeof(color2_)
11a0: 2f 73 69 7a 65 6f 66 28 2a 63 6f 6c 6f 72 32 5f  /sizeof(*color2_
11b0: 29 29 3b 20 0d 0a 09 69 6e 74 20 4c 20 3d 20 34  )); ...int L = 4
11c0: 3b 20 0d 0a 09 69 6e 74 20 5f 20 3d 20 30 3b 20  ; ...int _ = 0; 
11d0: 0d 0a 45 4e 44 0d 0a 43 41 53 45 28 32 29 0d 0a  ..END..CASE(2)..
11e0: 09 73 74 72 69 6e 67 20 63 6f 6c 6f 72 31 5f 5b  .string color1_[
11f0: 5d 20 3d 20 7b 22 61 62 22 2c 20 22 62 61 22 2c  ] = {"ab", "ba",
1200: 20 22 61 22 2c 20 22 61 61 62 22 7d 3b 0d 0a 09   "a", "aab"};...
1210: 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67    vector <string
1220: 3e 20 63 6f 6c 6f 72 31 28 63 6f 6c 6f 72 31 5f  > color1(color1_
1230: 2c 20 63 6f 6c 6f 72 31 5f 2b 73 69 7a 65 6f 66  , color1_+sizeof
1240: 28 63 6f 6c 6f 72 31 5f 29 2f 73 69 7a 65 6f 66  (color1_)/sizeof
1250: 28 2a 63 6f 6c 6f 72 31 5f 29 29 3b 20 0d 0a 09  (*color1_)); ...
1260: 73 74 72 69 6e 67 20 63 6f 6c 6f 72 32 5f 5b 5d  string color2_[]
1270: 20 3d 20 7b 22 62 62 22 2c 20 22 62 61 22 2c 20   = {"bb", "ba", 
1280: 22 61 22 2c 20 22 61 62 61 22 7d 3b 0d 0a 09 20  "a", "aba"};... 
1290: 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e   vector <string>
12a0: 20 63 6f 6c 6f 72 32 28 63 6f 6c 6f 72 32 5f 2c   color2(color2_,
12b0: 20 63 6f 6c 6f 72 32 5f 2b 73 69 7a 65 6f 66 28   color2_+sizeof(
12c0: 63 6f 6c 6f 72 32 5f 29 2f 73 69 7a 65 6f 66 28  color2_)/sizeof(
12d0: 2a 63 6f 6c 6f 72 32 5f 29 29 3b 20 0d 0a 09 69  *color2_)); ...i
12e0: 6e 74 20 4c 20 3d 20 35 3b 20 0d 0a 09 69 6e 74  nt L = 5; ...int
12f0: 20 5f 20 3d 20 34 33 32 3b 20 0d 0a 45 4e 44 0d   _ = 432; ..END.
1300: 0a 43 41 53 45 28 33 29 0d 0a 09 73 74 72 69 6e  .CASE(3)...strin
1310: 67 20 63 6f 6c 6f 72 31 5f 5b 5d 20 3d 20 7b 22  g color1_[] = {"
1320: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
1330: 78 78 78 78 22 2c 0d 0a 20 22 78 78 78 78 78 78  xxxx",.. "xxxxxx
1340: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 22 2c  xxxxxxxxxxxxxx",
1350: 0d 0a 20 22 78 78 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f  .. "xxOOOOOOOOOO
1360: 4f 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a 20 22 78 78  OOOOOOxx",.. "xx
1370: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f  OOOOOOOOOOOOOOOO
1380: 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78  xx",.. "xxOOxxxx
1390: 78 78 78 78 78 78 78 78 78 78 78 78 22 2c 0d 0a  xxxxxxxxxxxx",..
13a0: 20 22 78 78 4f 4f 78 78 78 78 78 78 78 78 78 78   "xxOOxxxxxxxxxx
13b0: 78 78 78 78 78 78 22 2c 0d 0a 20 22 78 78 4f 4f  xxxxxx",.. "xxOO
13c0: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
13d0: 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78 78  ",.. "xxOOxxxxxx
13e0: 78 78 78 78 78 78 78 78 78 78 22 2c 0d 0a 20 22  xxxxxxxxxx",.. "
13f0: 78 78 4f 4f 78 78 78 78 78 78 78 78 78 78 78 78  xxOOxxxxxxxxxxxx
1400: 78 78 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78  xxxx",.. "xxOOxx
1410: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 22 2c  xxxxxxxxxxxxxx",
1420: 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78 78 78 78  .. "xxOOxxxxxxxx
1430: 78 78 78 78 78 78 78 78 22 2c 0d 0a 20 22 78 78  xxxxxxxx",.. "xx
1440: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f  OOOOOOOOOOOOOOOO
1450: 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 4f 4f 4f 4f  xx",.. "xxOOOOOO
1460: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a  OOOOOOOOOOxx",..
1470: 20 22 78 78 78 78 78 78 78 78 78 78 78 78 78 78   "xxxxxxxxxxxxxx
1480: 78 78 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 78 78  xxOOxx",.. "xxxx
1490: 78 78 78 78 78 78 78 78 78 78 78 78 4f 4f 78 78  xxxxxxxxxxxxOOxx
14a0: 22 2c 0d 0a 20 22 78 78 78 78 78 78 78 78 78 78  ",.. "xxxxxxxxxx
14b0: 78 78 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20 22  xxxxxxOOxx",.. "
14c0: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
14d0: 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 78 78 78 78  OOxx",.. "xxxxxx
14e0: 78 78 78 78 78 78 78 78 78 78 4f 4f 78 78 22 2c  xxxxxxxxxxOOxx",
14f0: 0d 0a 20 22 78 78 78 78 78 78 78 78 78 78 78 78  .. "xxxxxxxxxxxx
1500: 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20 22 78 78  xxxxOOxx",.. "xx
1510: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 4f 4f  xxxxxxxxxxxxxxOO
1520: 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 4f 4f 4f 4f  xx",.. "xxOOOOOO
1530: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a  OOOOOOOOOOxx",..
1540: 20 22 78 78 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f   "xxOOOOOOOOOOOO
1550: 4f 4f 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 78 78  OOOOxx",.. "xxxx
1560: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
1570: 22 2c 0d 0a 20 22 78 78 78 78 78 78 78 78 78 78  ",.. "xxxxxxxxxx
1580: 78 78 78 78 78 78 78 78 78 78 22 7d 3b 0d 0a 09  xxxxxxxxxx"};...
1590: 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67    vector <string
15a0: 3e 20 63 6f 6c 6f 72 31 28 63 6f 6c 6f 72 31 5f  > color1(color1_
15b0: 2c 20 63 6f 6c 6f 72 31 5f 2b 73 69 7a 65 6f 66  , color1_+sizeof
15c0: 28 63 6f 6c 6f 72 31 5f 29 2f 73 69 7a 65 6f 66  (color1_)/sizeof
15d0: 28 2a 63 6f 6c 6f 72 31 5f 29 29 3b 20 0d 0a 09  (*color1_)); ...
15e0: 73 74 72 69 6e 67 20 63 6f 6c 6f 72 32 5f 5b 5d  string color2_[]
15f0: 20 3d 20 7b 22 78 78 78 78 78 78 78 78 78 78 78   = {"xxxxxxxxxxx
1600: 78 78 78 78 78 78 78 78 78 22 2c 0d 0a 20 22 78  xxxxxxxxx",.. "x
1610: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
1620: 78 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 4f 4f 4f  xxx",.. "xxOOOOO
1630: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 78 78 22 2c 0d  OOOOOOOOOOOxx",.
1640: 0a 20 22 78 78 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f  . "xxOOOOOOOOOOO
1650: 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 4f  OOOOOxx",.. "xxO
1660: 4f 78 78 78 78 78 78 78 78 78 78 78 78 4f 4f 78  OxxxxxxxxxxxxOOx
1670: 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78  x",.. "xxOOxxxxx
1680: 78 78 78 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20  xxxxxxxOOxx",.. 
1690: 22 78 78 4f 4f 78 78 78 78 78 78 78 78 78 78 78  "xxOOxxxxxxxxxxx
16a0: 78 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78  xOOxx",.. "xxOOx
16b0: 78 78 78 78 78 78 78 78 78 78 78 4f 4f 78 78 22  xxxxxxxxxxxOOxx"
16c0: 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78 78 78  ,.. "xxOOxxxxxxx
16d0: 78 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20 22 78  xxxxxOOxx",.. "x
16e0: 78 4f 4f 78 78 78 78 78 78 78 78 78 78 78 78 4f  xOOxxxxxxxxxxxxO
16f0: 4f 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78  Oxx",.. "xxOOxxx
1700: 78 78 78 78 78 78 78 78 78 4f 4f 78 78 22 2c 0d  xxxxxxxxxOOxx",.
1710: 0a 20 22 78 78 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f  . "xxOOOOOOOOOOO
1720: 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 4f  OOOOOxx",.. "xxO
1730: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 78  OOOOOOOOOOOOOOOx
1740: 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78  x",.. "xxOOxxxxx
1750: 78 78 78 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20  xxxxxxxOOxx",.. 
1760: 22 78 78 4f 4f 78 78 78 78 78 78 78 78 78 78 78  "xxOOxxxxxxxxxxx
1770: 78 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78  xOOxx",.. "xxOOx
1780: 78 78 78 78 78 78 78 78 78 78 78 4f 4f 78 78 22  xxxxxxxxxxxOOxx"
1790: 2c 0d 0a 20 22 78 78 4f 4f 78 78 78 78 78 78 78  ,.. "xxOOxxxxxxx
17a0: 78 78 78 78 78 4f 4f 78 78 22 2c 0d 0a 20 22 78  xxxxxOOxx",.. "x
17b0: 78 4f 4f 78 78 78 78 78 78 78 78 78 78 78 78 4f  xOOxxxxxxxxxxxxO
17c0: 4f 78 78 22 2c 0d 0a 20 22 78 78 4f 4f 78 78 78  Oxx",.. "xxOOxxx
17d0: 78 78 78 78 78 78 78 78 78 4f 4f 78 78 22 2c 0d  xxxxxxxxxOOxx",.
17e0: 0a 20 22 78 78 4f 4f 78 78 78 78 78 78 78 78 78  . "xxOOxxxxxxxxx
17f0: 78 78 78 4f 4f 78 78 22 2c 0d 0a 20 22 78 78 4f  xxxOOxx",.. "xxO
1800: 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 4f 78  OOOOOOOOOOOOOOOx
1810: 78 22 2c 0d 0a 20 22 78 78 4f 4f 4f 4f 4f 4f 4f  x",.. "xxOOOOOOO
1820: 4f 4f 4f 4f 4f 4f 4f 4f 4f 78 78 22 2c 0d 0a 20  OOOOOOOOOxx",.. 
1830: 22 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  "xxxxxxxxxxxxxxx
1840: 78 78 78 78 78 22 2c 0d 0a 20 22 78 78 78 78 78  xxxxx",.. "xxxxx
1850: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 22  xxxxxxxxxxxxxxx"
1860: 7d 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73  };...  vector <s
1870: 74 72 69 6e 67 3e 20 63 6f 6c 6f 72 32 28 63 6f  tring> color2(co
1880: 6c 6f 72 32 5f 2c 20 63 6f 6c 6f 72 32 5f 2b 73  lor2_, color2_+s
1890: 69 7a 65 6f 66 28 63 6f 6c 6f 72 32 5f 29 2f 73  izeof(color2_)/s
18a0: 69 7a 65 6f 66 28 2a 63 6f 6c 6f 72 32 5f 29 29  izeof(*color2_))
18b0: 3b 20 0d 0a 09 69 6e 74 20 4c 20 3d 20 35 38 3b  ; ...int L = 58;
18c0: 20 0d 0a 09 69 6e 74 20 5f 20 3d 20 36 31 39 37   ...int _ = 6197
18d0: 38 37 36 31 37 3b 20 0d 0a 45 4e 44 0d 0a 43 41  87617; ..END..CA
18e0: 53 45 28 34 29 0d 0a 09 73 74 72 69 6e 67 20 63  SE(4)...string c
18f0: 6f 6c 6f 72 31 5f 5b 5d 20 3d 20 7b 22 53 4a 58  olor1_[] = {"SJX
1900: 63 61 62 4b 54 57 65 55 58 68 77 78 47 69 78 46  cabKTWeUXhwxGixF
1910: 65 70 51 61 51 6c 46 78 72 41 65 64 4e 41 74 56  epQaQlFxrAedNAtV
1920: 50 22 2c 0d 0a 20 22 67 6f 72 42 49 6b 63 54 6c  P",.. "gorBIkcTl
1930: 4f 46 62 4c 44 62 46 65 45 6c 59 41 79 41 71 73  OFbLDbFeElYAyAqs
1940: 7a 51 64 4d 62 70 78 53 52 64 45 22 2c 0d 0a 20  zQdMbpxSRdE",.. 
1950: 22 53 51 56 48 50 65 68 6c 4e 74 65 73 62 4a 44  "SQVHPehlNtesbJD
1960: 66 6c 79 47 78 4d 71 76 67 7a 6a 58 69 73 52 6e  flyGxMqvgzjXisRn
1970: 71 44 63 51 4f 22 2c 0d 0a 20 22 70 49 41 45 42  qDcQO",.. "pIAEB
1980: 77 62 6d 70 50 57 43 6f 6f 51 41 75 6a 62 47 58  wbmpPWCooQAujbGX
1990: 46 47 4c 76 58 78 54 6d 45 78 4c 41 52 6b 66 22  FGLvXxTmExLARkf"
19a0: 2c 0d 0a 20 22 41 46 6e 57 79 57 4b 56 4f 62 66  ,.. "AFnWyWKVObf
19b0: 78 44 47 43 6a 54 78 64 5a 61 4f 62 67 77 64 78  xDGCjTxdZaObgwdx
19c0: 6c 50 4b 74 49 78 61 41 64 22 2c 0d 0a 20 22 75  lPKtIxaAd",.. "u
19d0: 7a 6e 4d 70 4a 56 4e 6a 41 6f 66 62 48 4a 6a 4f  znMpJVNjAofbHJjO
19e0: 72 5a 65 53 48 67 53 61 67 4f 43 55 4d 47 62 76  rZeSHgSagOCUMGbv
19f0: 6b 56 52 22 2c 0d 0a 20 22 4c 42 52 72 44 62 54  kVR",.. "LBRrDbT
1a00: 41 79 4b 66 56 6e 65 64 4b 69 52 66 7a 67 52 7a  AyKfVnedKiRfzgRz
1a10: 45 43 70 63 73 7a 69 71 61 54 77 64 6f 22 2c 0d  ECpcsziqaTwdo",.
1a20: 0a 20 22 4a 72 4a 48 76 73 45 56 56 47 44 6b 4e  . "JrJHvsEVVGDkN
1a30: 56 47 71 4c 62 70 78 79 4c 44 50 6c 6f 42 75 4e  VGqLbpxyLDPloBuN
1a40: 44 51 4b 6e 52 65 49 22 2c 0d 0a 20 22 53 53 59  DQKnReI",.. "SSY
1a50: 70 62 6a 4b 48 53 43 6e 51 68 75 79 59 72 56 61  pbjKHSCnQhuyYrVa
1a60: 75 57 44 48 44 79 68 41 6f 47 79 65 63 72 5a 4d  uWDHDyhAoGyecrZM
1a70: 76 22 2c 0d 0a 20 22 55 64 65 74 51 66 57 45 55  v",.. "UdetQfWEU
1a80: 57 48 48 75 41 78 52 53 64 6b 4a 4f 4f 4a 53 69  WHHuAxRSdkJOOJSi
1a90: 78 4b 70 51 58 70 43 46 5a 48 4f 22 2c 0d 0a 20  xKpQXpCFZHO",.. 
1aa0: 22 4b 58 56 73 51 62 75 51 74 49 67 73 55 4c 4f  "KXVsQbuQtIgsULO
1ab0: 4d 73 54 76 50 46 4e 55 71 6b 42 6c 64 4d 54 4c  MsTvPFNUqkBldMTL
1ac0: 43 69 70 59 4b 22 2c 0d 0a 20 22 68 6f 58 43 6f  CipYK",.. "hoXCo
1ad0: 6e 6a 6e 44 57 51 6b 5a 56 74 79 5a 6c 77 53 65  njnDWQkZVtyZlwSe
1ae0: 64 76 64 56 72 4e 57 71 51 68 47 55 43 6c 51 22  dvdVrNWqQhGUClQ"
1af0: 2c 0d 0a 20 22 54 70 73 76 76 79 6f 58 73 58 6d  ,.. "TpsvvyoXsXm
1b00: 51 70 42 41 47 47 56 44 72 58 43 6b 6f 64 6f 52  QpBAGGVDrXCkodoR
1b10: 48 51 5a 6d 70 6f 51 44 57 22 2c 0d 0a 20 22 63  HQZmpoQDW",.. "c
1b20: 73 69 4a 73 70 7a 54 71 65 46 42 52 6d 50 67 65  siJspzTqeFBRmPge
1b30: 45 74 54 41 7a 66 72 66 43 47 6c 54 5a 71 63 50  EtTAzfrfCGlTZqcP
1b40: 75 79 4f 22 2c 0d 0a 20 22 76 73 50 44 56 42 4a  uyO",.. "vsPDVBJ
1b50: 56 61 4a 6d 55 41 74 44 64 63 73 4b 6f 55 6b 50  VaJmUAtDdcsKoUkP
1b60: 45 62 44 6d 41 77 74 5a 4b 77 6a 6a 50 22 2c 0d  EbDmAwtZKwjjP",.
1b70: 0a 20 22 4d 4f 66 6f 4d 68 4d 69 4b 49 76 47 51  . "MOfoMhMiKIvGQ
1b80: 6f 65 49 4a 58 48 7a 79 43 6c 57 52 74 52 75 4b  oeIJXHzyClWRtRuK
1b90: 58 4d 71 78 55 41 46 22 2c 0d 0a 20 22 4b 79 79  XMqxUAF",.. "Kyy
1ba0: 55 43 6b 52 42 6a 73 59 76 6d 50 46 46 45 47 42  UCkRBjsYvmPFFEGB
1bb0: 71 71 56 68 49 55 64 74 76 49 79 79 4c 61 63 66  qqVhIUdtvIyyLacf
1bc0: 75 22 2c 0d 0a 20 22 42 66 75 77 66 53 61 6a 53  u",.. "BfuwfSajS
1bd0: 6c 63 75 54 7a 68 4d 75 66 48 53 51 4c 75 64 76  lcuTzhMufHSQLudv
1be0: 47 45 47 6c 79 48 73 45 6d 42 44 22 2c 0d 0a 20  GEGlyHsEmBD",.. 
1bf0: 22 50 4c 70 49 58 5a 6b 64 79 58 76 65 54 4d 66  "PLpIXZkdyXveTMf
1c00: 53 76 71 6e 44 47 4b 57 4f 5a 72 54 42 4d 55 49  SvqnDGKWOZrTBMUI
1c10: 6c 5a 72 71 46 22 2c 0d 0a 20 22 64 7a 56 4d 43  lZrqF",.. "dzVMC
1c20: 71 72 53 4c 62 61 6e 52 4a 54 59 70 44 4a 4e 48  qrSLbanRJTYpDJNH
1c30: 41 4f 4c 50 53 7a 6d 76 53 45 50 51 4a 59 6d 22  AOLPSzmvSEPQJYm"
1c40: 2c 0d 0a 20 22 72 41 6a 52 6b 72 53 6a 6f 75 4a  ,.. "rAjRkrSjouJ
1c50: 79 46 61 43 53 50 50 4c 59 53 7a 71 44 6d 4d 6f  yFaCSPPLYSzqDmMo
1c60: 41 44 79 57 41 62 6f 62 4a 22 2c 0d 0a 20 22 65  ADyWAbobJ",.. "e
1c70: 4f 43 42 72 4a 4e 6f 79 46 6e 47 70 58 70 78 69  OCBrJNoyFnGpXpxi
1c80: 45 78 58 63 6f 4f 48 6e 56 73 61 45 50 58 68 50  ExXcoOHnVsaEPXhP
1c90: 66 4c 65 22 2c 0d 0a 20 22 58 4d 6a 52 6b 73 6e  fLe",.. "XMjRksn
1ca0: 78 57 73 73 50 45 49 4e 68 64 68 62 69 4c 42 53  xWssPEINhdhbiLBS
1cb0: 59 70 43 4c 74 77 4e 73 68 46 6a 58 53 22 2c 0d  YpCLtwNshFjXS",.
1cc0: 0a 20 22 48 6e 6e 44 65 55 41 62 75 73 77 73 67  . "HnnDeUAbuswsg
1cd0: 73 59 51 75 41 61 58 79 53 4c 6b 46 59 55 77 46  sYQuAaXySLkFYUwF
1ce0: 58 77 59 54 72 65 4d 22 2c 0d 0a 20 22 75 71 4c  XwYTreM",.. "uqL
1cf0: 6e 77 4f 45 47 62 77 5a 5a 44 67 41 41 57 45 64  nwOEGbwZZDgAAWEd
1d00: 4c 52 5a 78 46 6c 6f 67 44 6d 6c 68 6a 68 67 48  LRZxFlogDmlhjhgH
1d10: 4d 22 2c 0d 0a 20 22 4e 63 66 61 51 73 67 50 51  M",.. "NcfaQsgPQ
1d20: 66 69 72 6b 59 44 52 46 72 4c 51 70 79 53 6d 42  firkYDRFrLQpySmB
1d30: 47 66 52 48 75 6d 4b 55 4c 5a 66 22 2c 0d 0a 20  GfRHumKULZf",.. 
1d40: 22 6d 4f 70 6d 6d 67 63 6c 73 78 52 7a 58 73 6b  "mOpmmgclsxRzXsk
1d50: 45 79 77 66 72 79 71 43 52 79 41 54 4e 6f 4a 77  EywfryqCRyATNoJw
1d60: 6e 6c 48 69 44 22 2c 0d 0a 20 22 41 6e 6f 4b 6f  nlHiD",.. "AnoKo
1d70: 4b 41 6a 72 61 73 74 74 6a 4e 6c 48 43 52 4f 6e  KAjrasttjNlHCROn
1d80: 76 54 4a 4d 68 45 48 6c 56 50 56 6f 56 4d 6f 22  vTJMhEHlVPVoVMo"
1d90: 2c 0d 0a 20 22 79 65 67 4c 79 49 75 52 6b 6b 45  ,.. "yegLyIuRkkE
1da0: 4e 46 41 6a 77 7a 44 6f 50 4c 4b 6a 67 55 48 48  NFAjwzDoPLKjgUHH
1db0: 45 6b 66 7a 59 44 49 70 6f 22 2c 0d 0a 20 22 45  EkfzYDIpo",.. "E
1dc0: 63 78 52 47 47 66 75 61 42 58 55 46 58 6b 53 78  cxRGGfuaBXUFXkSx
1dd0: 63 74 4a 57 4f 4c 6d 6d 56 62 76 6f 4d 6b 57 74  ctJWOLmmVbvoMkWt
1de0: 54 76 56 22 2c 0d 0a 20 22 6e 42 4d 6b 4f 42 48  TvV",.. "nBMkOBH
1df0: 67 61 6c 74 45 56 7a 66 79 47 78 73 65 47 68 6d  galtEVzfyGxseGhm
1e00: 42 73 63 66 47 49 62 78 46 62 71 52 6e 22 2c 0d  BscfGIbxFbqRn",.
1e10: 0a 20 22 47 76 6b 45 63 4c 74 71 64 4f 6f 66 47  . "GvkEcLtqdOofG
1e20: 74 73 62 57 44 61 66 56 4d 62 4e 64 4a 78 73 66  tsbWDafVMbNdJxsf
1e30: 66 4b 44 7a 53 69 52 22 2c 0d 0a 20 22 6a 68 5a  fKDzSiR",.. "jhZ
1e40: 51 55 56 7a 54 7a 61 6c 72 5a 63 65 62 76 79 71  QUVzTzalrZcebvyq
1e50: 50 57 74 4f 55 55 79 6e 69 42 4b 54 57 64 79 4c  PWtOUUyniBKTWdyL
1e60: 69 22 2c 0d 0a 20 22 4f 44 4a 4c 51 50 4d 64 6a  i",.. "ODJLQPMdj
1e70: 44 64 54 6c 78 72 66 47 73 4e 6d 42 66 65 47 59  DdTlxrfGsNmBfeGY
1e80: 6a 7a 65 58 41 70 71 4b 44 68 4a 22 2c 0d 0a 20  jzeXApqKDhJ",.. 
1e90: 22 76 6c 4a 6b 57 4d 7a 64 56 51 75 6a 4b 64 4c  "vlJkWMzdVQujKdL
1ea0: 56 69 51 43 6c 4f 72 4a 58 4d 54 42 6b 75 5a 45  ViQClOrJXMTBkuZE
1eb0: 61 73 46 67 67 22 2c 0d 0a 20 22 46 41 73 62 75  asFgg",.. "FAsbu
1ec0: 7a 72 4c 56 49 67 61 72 79 71 58 42 66 75 42 52  zrLVIgaryqXBfuBR
1ed0: 41 62 52 65 6c 65 58 53 53 67 45 4b 53 76 74 22  AbReleXSSgEKSvt"
1ee0: 7d 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73  };...  vector <s
1ef0: 74 72 69 6e 67 3e 20 63 6f 6c 6f 72 31 28 63 6f  tring> color1(co
1f00: 6c 6f 72 31 5f 2c 20 63 6f 6c 6f 72 31 5f 2b 73  lor1_, color1_+s
1f10: 69 7a 65 6f 66 28 63 6f 6c 6f 72 31 5f 29 2f 73  izeof(color1_)/s
1f20: 69 7a 65 6f 66 28 2a 63 6f 6c 6f 72 31 5f 29 29  izeof(*color1_))
1f30: 3b 20 0d 0a 09 73 74 72 69 6e 67 20 63 6f 6c 6f  ; ...string colo
1f40: 72 32 5f 5b 5d 20 3d 20 7b 22 58 41 68 6c 55 48  r2_[] = {"XAhlUH
1f50: 74 66 6a 4f 70 4f 6c 51 6c 6f 77 57 70 70 51 63  tfjOpOlQlowWppQc
1f60: 6f 64 4d 47 55 69 71 6f 4c 6f 62 78 6e 44 22 2c  odMGUiqoLobxnD",
1f70: 0d 0a 20 22 49 44 7a 47 6c 4b 72 48 69 56 47 64  .. "IDzGlKrHiVGd
1f80: 42 6a 5a 78 49 63 6f 78 6a 77 61 67 62 57 69 65  BjZxIcoxjwagbWie
1f90: 4b 76 55 77 5a 72 6a 67 22 2c 0d 0a 20 22 53 6b  KvUwZrjg",.. "Sk
1fa0: 70 6b 54 56 65 49 46 65 6f 4e 51 7a 55 55 67 6d  pkTVeIFeoNQzUUgm
1fb0: 59 41 59 73 6b 4b 4f 4e 4e 5a 64 67 58 78 53 69  YAYskKONNZdgXxSi
1fc0: 57 64 22 2c 0d 0a 20 22 72 58 42 47 68 54 6d 71  Wd",.. "rXBGhTmq
1fd0: 6e 76 78 6b 6d 71 69 75 74 6f 44 7a 50 75 73 44  nvxkmqiutoDzPusD
1fe0: 69 4f 55 67 67 45 46 58 47 43 7a 6d 22 2c 0d 0a  iOUggEFXGCzm",..
1ff0: 20 22 66 7a 72 78 56 75 54 62 46 58 75 6e 47 62   "fzrxVuTbFXunGb
2000: 65 45 61 76 6a 73 68 6d 72 49 52 6c 44 6f 72 54  eEavjshmrIRlDorT
2010: 75 49 53 43 78 6e 22 2c 0d 0a 20 22 4c 73 76 49  uISCxn",.. "LsvI
2020: 61 78 54 6b 4f 42 6a 63 73 6b 69 65 6b 6d 72 4b  axTkOBjcskiekmrK
2030: 4e 4e 46 45 58 71 6e 66 4d 4e 58 4c 57 71 71 75  NNFEXqnfMNXLWqqu
2040: 22 2c 0d 0a 20 22 65 6b 7a 78 47 49 6c 62 4a 50  ",.. "ekzxGIlbJP
2050: 56 45 51 50 59 41 62 54 75 4d 74 5a 4b 73 43 69  VEQPYAbTuMtZKsCi
2060: 75 62 44 58 44 69 42 56 7a 55 22 2c 0d 0a 20 22  ubDXDiBVzU",.. "
2070: 68 5a 75 4f 43 4a 78 76 42 4f 59 45 4e 47 53 46  hZuOCJxvBOYENGSF
2080: 63 55 69 4b 4b 41 4b 66 43 64 65 62 75 74 56 6d  cUiKKAKfCdebutVm
2090: 6e 79 76 42 22 2c 0d 0a 20 22 55 76 65 4e 6b 4b  nyvB",.. "UveNkK
20a0: 52 51 6d 48 6e 65 64 72 52 4f 51 4f 70 48 4a 66  RQmHnedrROQOpHJf
20b0: 72 48 6a 77 63 4e 4c 55 53 68 6c 44 62 6e 22 2c  rHjwcNLUShlDbn",
20c0: 0d 0a 20 22 70 74 55 6b 76 62 61 47 44 72 79 48  .. "ptUkvbaGDryH
20d0: 52 6b 59 66 48 4b 4c 6b 53 67 56 70 6a 57 43 45  RkYfHKLkSgVpjWCE
20e0: 63 67 61 7a 79 78 47 4b 22 2c 0d 0a 20 22 6e 56  cgazyxGK",.. "nV
20f0: 50 59 45 71 54 54 4a 73 52 50 6a 7a 6a 66 64 4f  PYEqTTJsRPjzjfdO
2100: 69 55 4c 68 6e 5a 50 46 65 4e 63 6e 62 58 61 51  iULhnZPFeNcnbXaQ
2110: 6c 6b 22 2c 0d 0a 20 22 49 50 58 42 58 52 68 4d  lk",.. "IPXBXRhM
2120: 51 49 6b 78 70 79 67 73 67 62 63 52 66 4d 75 76  QIkxpygsgbcRfMuv
2130: 49 63 75 7a 55 50 50 48 47 4f 57 58 22 2c 0d 0a  IcuzUPPHGOWX",..
2140: 20 22 79 57 57 6c 4e 79 45 79 71 5a 53 49 4f 58   "yWWlNyEyqZSIOX
2150: 42 46 41 79 62 49 75 46 70 56 71 70 76 6d 4b 52  BFAybIuFpVqpvmKR
2160: 61 52 46 72 41 45 22 2c 0d 0a 20 22 45 76 42 4a  aRFrAE",.. "EvBJ
2170: 56 74 48 76 4b 68 6a 72 46 63 6d 74 70 64 42 62  VtHvKhjrFcmtpdBb
2180: 46 54 64 54 56 74 58 58 5a 51 4b 41 67 6c 4b 54  FTdTVtXXZQKAglKT
2190: 22 2c 0d 0a 20 22 62 43 56 6a 48 7a 55 76 79 49  ",.. "bCVjHzUvyI
21a0: 4e 46 6b 78 58 61 67 65 5a 51 4d 7a 43 79 4e 68  NFkxXageZQMzCyNh
21b0: 63 69 66 41 43 64 4a 56 44 68 22 2c 0d 0a 20 22  cifACdJVDh",.. "
21c0: 6c 5a 49 54 59 63 44 53 65 49 62 4c 77 65 79 46  lZITYcDSeIbLweyF
21d0: 74 6f 4d 41 66 4f 51 79 42 4e 75 70 4b 6c 68 63  toMAfOQyBNupKlhc
21e0: 4e 70 67 6f 22 2c 0d 0a 20 22 42 64 75 73 6c 4e  Npgo",.. "BduslN
21f0: 72 4a 64 57 4f 55 75 6b 59 46 46 69 64 45 6b 4d  rJdWOUukYFFidEkM
2200: 46 61 67 68 66 6f 66 70 78 56 67 76 4a 64 22 2c  FaghfofpxVgvJd",
2210: 0d 0a 20 22 59 72 4a 70 44 5a 4b 71 64 6a 45 50  .. "YrJpDZKqdjEP
2220: 7a 64 4c 73 4f 51 45 64 6b 63 72 42 66 4e 48 50  zdLsOQEdkcrBfNHP
2230: 65 6d 58 48 6f 6b 43 57 22 2c 0d 0a 20 22 47 6a  emXHokCW",.. "Gj
2240: 65 55 4b 53 47 6a 44 6c 67 4b 54 79 55 47 4e 72  eUKSGjDlgKTyUGNr
2250: 4d 51 62 42 4c 78 52 55 63 67 72 57 70 6b 41 77  MQbBLxRUcgrWpkAw
2260: 4f 44 22 2c 0d 0a 20 22 77 67 78 54 63 73 77 71  OD",.. "wgxTcswq
2270: 64 4a 48 61 44 75 67 4e 49 52 4d 76 72 68 42 73  dJHaDugNIRMvrhBs
2280: 64 44 61 4a 41 73 73 56 62 53 52 57 22 2c 0d 0a  dDaJAssVbSRW",..
2290: 20 22 71 6d 56 6d 71 46 45 70 76 67 47 69 6f 4d   "qmVmqFEpvgGioM
22a0: 58 44 53 46 71 45 6f 51 63 44 4f 41 61 55 6f 47  XDSFqEoQcDOAaUoG
22b0: 50 45 6f 76 53 4f 22 2c 0d 0a 20 22 4b 72 75 6b  PEovSO",.. "Kruk
22c0: 50 6c 70 66 4f 68 61 77 61 6f 76 43 66 74 65 54  PlpfOhawaovCfteT
22d0: 53 43 49 64 4c 4d 72 74 49 6d 56 74 69 4d 79 51  SCIdLMrtImVtiMyQ
22e0: 22 2c 0d 0a 20 22 79 6b 77 6d 78 48 73 4b 4d 46  ",.. "ykwmxHsKMF
22f0: 7a 46 48 77 63 62 79 79 65 64 4c 76 68 5a 50 6e  zFHwcbyyedLvhZPn
2300: 61 4e 47 71 4a 4d 4d 43 78 64 22 2c 0d 0a 20 22  aNGqJMMCxd",.. "
2310: 48 55 4e 59 43 58 6a 4e 4c 51 49 46 43 4c 4c 47  HUNYCXjNLQIFCLLG
2320: 70 43 58 48 42 43 48 4c 54 78 4c 79 6e 42 78 6e  pCXHBCHLTxLynBxn
2330: 48 46 62 78 22 2c 0d 0a 20 22 75 77 6a 7a 62 4e  HFbx",.. "uwjzbN
2340: 62 4a 65 70 56 46 67 4d 50 55 58 56 69 72 78 59  bJepVFgMPUXVirxY
2350: 48 7a 45 78 71 75 42 45 74 50 6d 4b 6a 75 22 2c  HzExquBEtPmKju",
2360: 0d 0a 20 22 78 58 41 78 41 62 4a 65 50 79 55 73  .. "xXAxAbJePyUs
2370: 56 48 65 4c 79 74 44 76 41 78 42 47 4d 52 74 6e  VHeLytDvAxBGMRtn
2380: 76 43 45 69 5a 5a 71 65 22 2c 0d 0a 20 22 78 4d  vCEiZZqe",.. "xM
2390: 6b 51 6f 49 56 78 57 50 58 50 67 61 4f 59 6d 44  kQoIVxWPXPgaOYmD
23a0: 6a 54 4f 58 69 4d 49 6d 56 64 7a 6f 6a 45 52 4e  jTOXiMImVdzojERN
23b0: 78 53 22 2c 0d 0a 20 22 64 77 49 43 46 77 4d 41  xS",.. "dwICFwMA
23c0: 6d 64 4f 49 55 78 79 41 64 58 64 73 68 61 73 6e  mdOIUxyAdXdshasn
23d0: 7a 77 79 68 66 6e 56 57 56 71 5a 4a 22 2c 0d 0a  zwyhfnVWVqZJ",..
23e0: 20 22 65 74 79 70 58 4e 56 76 53 54 45 51 76 72   "etypXNVvSTEQvr
23f0: 69 47 42 5a 64 53 47 6d 44 45 48 68 76 70 53 71  iGBZdSGmDEHhvpSq
2400: 6b 46 6b 6c 43 53 22 2c 0d 0a 20 22 59 6b 78 70  kFklCS",.. "Ykxp
2410: 46 42 43 52 59 55 75 65 52 63 4b 61 4a 55 58 56  FBCRYUueRcKaJUXV
2420: 64 61 4d 6f 59 4d 59 45 6f 6f 50 51 56 4d 4f 72  daMoYMYEooPQVMOr
2430: 22 2c 0d 0a 20 22 44 54 72 65 78 44 71 63 6c 5a  ",.. "DTrexDqclZ
2440: 4e 4b 64 50 75 54 52 46 48 75 61 6c 4a 53 46 7a  NKdPuTRFHualJSFz
2450: 69 43 4c 50 43 5a 6a 70 78 6f 22 2c 0d 0a 20 22  iCLPCZjpxo",.. "
2460: 54 66 45 69 6a 63 41 73 53 4a 50 69 6b 6b 6d 42  TfEijcAsSJPikkmB
2470: 53 62 58 4d 71 59 48 41 68 50 54 63 70 63 4b 56  SbXMqYHAhPTcpcKV
2480: 53 6b 49 58 22 2c 0d 0a 20 22 78 4b 58 48 59 50  SkIX",.. "xKXHYP
2490: 59 4d 4a 78 46 70 53 62 78 6c 74 44 4b 59 75 52  YMJxFpSbxltDKYuR
24a0: 69 54 6b 4f 4c 78 70 51 4b 6e 58 5a 50 73 22 2c  iTkOLxpQKnXZPs",
24b0: 0d 0a 20 22 59 46 59 75 76 75 59 48 66 70 46 4a  .. "YFYuvuYHfpFJ
24c0: 63 72 4c 4e 49 64 6c 4e 66 42 78 52 6e 57 64 70  crLNIdlNfBxRnWdp
24d0: 70 73 64 61 6c 42 6b 78 22 2c 0d 0a 20 22 4e 46  psdalBkx",.. "NF
24e0: 54 79 73 42 76 4e 46 6a 65 6a 64 6e 6c 68 52 54  TysBvNFjejdnlhRT
24f0: 63 6c 62 63 66 47 69 70 4e 43 78 70 46 45 4f 72  clbcfGipNCxpFEOr
2500: 69 59 22 2c 0d 0a 20 22 74 68 6b 67 56 66 6c 4a  iY",.. "thkgVflJ
2510: 59 6d 62 55 59 62 49 6c 61 66 4e 55 4d 47 65 50  YmbUYbIlafNUMGeP
2520: 51 57 69 5a 79 59 7a 59 58 76 55 52 22 7d 0d 0a  QWiZyYzYXvUR"}..
2530: 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73 74  ;...  vector <st
2540: 72 69 6e 67 3e 20 63 6f 6c 6f 72 32 28 63 6f 6c  ring> color2(col
2550: 6f 72 32 5f 2c 20 63 6f 6c 6f 72 32 5f 2b 73 69  or2_, color2_+si
2560: 7a 65 6f 66 28 63 6f 6c 6f 72 32 5f 29 2f 73 69  zeof(color2_)/si
2570: 7a 65 6f 66 28 2a 63 6f 6c 6f 72 32 5f 29 29 3b  zeof(*color2_));
2580: 20 0d 0a 09 69 6e 74 20 4c 20 3d 20 31 32 30 30   ...int L = 1200
2590: 3b 20 0d 0a 09 69 6e 74 20 5f 20 3d 20 33 39 36  ; ...int _ = 396
25a0: 30 36 35 34 32 36 3b 20 0d 0a 45 4e 44 0d 0a 2f  065426; ..END../
25b0: 2a 0d 0a 43 41 53 45 28 35 29 0d 0a 09 73 74 72  *..CASE(5)...str
25c0: 69 6e 67 20 63 6f 6c 6f 72 31 5f 5b 5d 20 3d 20  ing color1_[] = 
25d0: 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73 74  ;...  vector <st
25e0: 72 69 6e 67 3e 20 63 6f 6c 6f 72 31 28 63 6f 6c  ring> color1(col
25f0: 6f 72 31 5f 2c 20 63 6f 6c 6f 72 31 5f 2b 73 69  or1_, color1_+si
2600: 7a 65 6f 66 28 63 6f 6c 6f 72 31 5f 29 2f 73 69  zeof(color1_)/si
2610: 7a 65 6f 66 28 2a 63 6f 6c 6f 72 31 5f 29 29 3b  zeof(*color1_));
2620: 20 0d 0a 09 73 74 72 69 6e 67 20 63 6f 6c 6f 72   ...string color
2630: 32 5f 5b 5d 20 3d 20 3b 0d 0a 09 20 20 76 65 63  2_[] = ;...  vec
2640: 74 6f 72 20 3c 73 74 72 69 6e 67 3e 20 63 6f 6c  tor <string> col
2650: 6f 72 32 28 63 6f 6c 6f 72 32 5f 2c 20 63 6f 6c  or2(color2_, col
2660: 6f 72 32 5f 2b 73 69 7a 65 6f 66 28 63 6f 6c 6f  or2_+sizeof(colo
2670: 72 32 5f 29 2f 73 69 7a 65 6f 66 28 2a 63 6f 6c  r2_)/sizeof(*col
2680: 6f 72 32 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 4c  or2_)); ...int L
2690: 20 3d 20 3b 20 0d 0a 09 69 6e 74 20 5f 20 3d 20   = ; ...int _ = 
26a0: 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 45 28 36 29  ; ..END..CASE(6)
26b0: 0d 0a 09 73 74 72 69 6e 67 20 63 6f 6c 6f 72 31  ...string color1
26c0: 5f 5b 5d 20 3d 20 3b 0d 0a 09 20 20 76 65 63 74  _[] = ;...  vect
26d0: 6f 72 20 3c 73 74 72 69 6e 67 3e 20 63 6f 6c 6f  or <string> colo
26e0: 72 31 28 63 6f 6c 6f 72 31 5f 2c 20 63 6f 6c 6f  r1(color1_, colo
26f0: 72 31 5f 2b 73 69 7a 65 6f 66 28 63 6f 6c 6f 72  r1_+sizeof(color
2700: 31 5f 29 2f 73 69 7a 65 6f 66 28 2a 63 6f 6c 6f  1_)/sizeof(*colo
2710: 72 31 5f 29 29 3b 20 0d 0a 09 73 74 72 69 6e 67  r1_)); ...string
2720: 20 63 6f 6c 6f 72 32 5f 5b 5d 20 3d 20 3b 0d 0a   color2_[] = ;..
2730: 09 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e  .  vector <strin
2740: 67 3e 20 63 6f 6c 6f 72 32 28 63 6f 6c 6f 72 32  g> color2(color2
2750: 5f 2c 20 63 6f 6c 6f 72 32 5f 2b 73 69 7a 65 6f  _, color2_+sizeo
2760: 66 28 63 6f 6c 6f 72 32 5f 29 2f 73 69 7a 65 6f  f(color2_)/sizeo
2770: 66 28 2a 63 6f 6c 6f 72 32 5f 29 29 3b 20 0d 0a  f(*color2_)); ..
2780: 09 69 6e 74 20 4c 20 3d 20 3b 20 0d 0a 09 69 6e  .int L = ; ...in
2790: 74 20 5f 20 3d 20 3b 20 0d 0a 45 4e 44 0d 0a 2a  t _ = ; ..END..*
27a0: 2f 0d 0a 7d 0d 0a 2f 2f 20 45 4e 44 20 43 55 54  /..}..// END CUT
27b0: 20 48 45 52 45 0d 0a                              HERE..