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..