%% Nonogram problem from Gecode: Castle %% From http://www.cs.kuleuven.be/~bmd/nonogram.pl %% ROW RULES row_max = 35; row_states = array2d(1..row_total_states, 1..2, [ % pattern 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,1,1,1, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 14,0, 14,15, 16,0, 16,17, 18,0, 18,19, 19,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,3,1,3, % tmp: dummy 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 21,0, 21,22, 23,0, 23,24, 0,25, 0,26, 26,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,4,3,1,5, % tmp: dummy 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 16,0, 16,17, 0,18, 0,19, 0,20, 21,0, 21,22, 0,23, 0,24, 25,0, 25,26, 27,0, 27,28, 0,29, 0,30, 0,31, 0,32, 32,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,7,3,4,1,3,5,1,7, % tmp: dummy 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 0,12, 13,0, 13,14, 0,15, 0,16, 0,17, 18,0, 18,19, 20,0, 20,21, 0,22, 0,23, 24,0, 24,25, 0,26, 0,27, 0,28, 0,29, 30,0, 30,31, 32,0, 32,33, 0,34, 0,35, 0,36, 0,37, 0,38, 0,39, 39,0, % pattern 0,0,0,0,0,0,2,2,4,9,1,5,1,1,1,1,1,1,1, % tmp: dummy 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 % 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 24,0, 24,25, 0,26, 0,27, 0,28, 0,29, 30,0, 30,31, 32,0, 32,33, 34,0, 34,35, 36,0, 36,37, 38,0, 38,39, 40,0, 40,41, 42,0, 42,43, 43,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,4,5,10,2,1,8,7,1, % tmp: dummy 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 % 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 0,25, 26,0, 26,27, 28,0, 28,29, 0,30, 0,31, 0,32, 0,33, 0,34, 0,35, 0,36, 37,0, 37,38, 0,39, 0,40, 0,41, 0,42, 0,43, 0,44, 45,0, 45,46, 46,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,3,16,1,2, % tmp: dummy 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 9,0, 9,10, 0,11, 0,12, 13,0, 13,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 34,0, 34,35, 36,0, 36,37, 0,38, 38,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,8,5,1,2,4,9,1,3, % tmp: dummy 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 21,0, 21,22, 0,23, 0,24, 0,25, 26,0, 26,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 0,34, 0,35, 36,0, 36,37, 38,0, 38,39, 0,40, 0,41, 41,0, % pattern 0,0,0,0,0,0,0,4,5,3,14,1,1,1,1,4,1,1,3, % tmp: dummy 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 0,15, 16,0, 16,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 0,28, 0,29, 0,30, 31,0, 31,32, 33,0, 33,34, 35,0, 35,36, 37,0, 37,38, 39,0, 39,40, 0,41, 0,42, 0,43, 44,0, 44,45, 46,0, 46,47, 48,0, 48,49, 0,50, 0,51, 51,0, % pattern 3,3,2,2,2,4,1,1,1,1,1,1,1,1,3,1,1,3,2, % tmp: dummy 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 % 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 27,0, 27,28, 29,0, 29,30, 31,0, 31,32, 33,0, 33,34, 35,0, 35,36, 37,0, 37,38, 39,0, 39,40, 0,41, 0,42, 43,0, 43,44, 45,0, 45,46, 47,0, 47,48, 0,49, 0,50, 51,0, 51,52, 0,53, 53,0, % pattern 0,0,0,0,0,0,0,0,8,2,7,2,1,1,2,1,1,3,3, % tmp: dummy 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 21,0, 21,22, 0,23, 24,0, 24,25, 26,0, 26,27, 28,0, 28,29, 0,30, 31,0, 31,32, 33,0, 33,34, 35,0, 35,36, 0,37, 0,38, 39,0, 39,40, 0,41, 0,42, 42,0, % pattern 0,0,0,0,0,0,1,5,9,12,2,1,1,3,1,1,2,2,1, % tmp: dummy 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 19,0, 19,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 0,28, 0,29, 0,30, 0,31, 32,0, 32,33, 0,34, 35,0, 35,36, 37,0, 37,38, 39,0, 39,40, 0,41, 0,42, 43,0, 43,44, 45,0, 45,46, 47,0, 47,48, 0,49, 50,0, 50,51, 0,52, 53,0, 53,54, 54,0, % pattern 0,0,3,2,2,1,1,1,1,4,1,1,1,3,3,1,1,2,2, % tmp: dummy 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 % 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 8,0, 8,9, 0,10, 11,0, 11,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 0,21, 0,22, 0,23, 24,0, 24,25, 26,0, 26,27, 28,0, 28,29, 30,0, 30,31, 0,32, 0,33, 34,0, 34,35, 0,36, 0,37, 38,0, 38,39, 40,0, 40,41, 42,0, 42,43, 0,44, 45,0, 45,46, 0,47, 47,0, % pattern 0,0,0,0,0,0,0,5,2,2,2,2,1,5,2,1,1,2,5, % tmp: dummy 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 0,18, 19,0, 19,20, 21,0, 21,22, 0,23, 0,24, 0,25, 0,26, 27,0, 27,28, 0,29, 30,0, 30,31, 32,0, 32,33, 34,0, 34,35, 0,36, 37,0, 37,38, 0,39, 0,40, 0,41, 0,42, 42,0, % pattern 0,0,0,0,0,0,0,3,5,9,2,1,1,6,3,1,3,2,3, % tmp: dummy 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 21,0, 21,22, 0,23, 24,0, 24,25, 26,0, 26,27, 28,0, 28,29, 0,30, 0,31, 0,32, 0,33, 0,34, 35,0, 35,36, 0,37, 0,38, 39,0, 39,40, 41,0, 41,42, 0,43, 0,44, 45,0, 45,46, 0,47, 48,0, 48,49, 0,50, 0,51, 51,0, % pattern 0,0,0,0,0,0,0,1,4,1,1,1,4,1,5,5,3,3,3, % tmp: dummy 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 8,0, 8,9, 10,0, 10,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 0,18, 19,0, 19,20, 21,0, 21,22, 0,23, 0,24, 0,25, 0,26, 27,0, 27,28, 0,29, 0,30, 0,31, 0,32, 33,0, 33,34, 0,35, 0,36, 37,0, 37,38, 0,39, 0,40, 41,0, 41,42, 0,43, 0,44, 44,0, % pattern 0,0,0,0,0,0,0,0,0,4,1,1,1,1,3,4,6,6,3, % tmp: dummy 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 8,0, 8,9, 10,0, 10,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 23,0, 23,24, 0,25, 0,26, 0,27, 0,28, 0,29, 30,0, 30,31, 0,32, 0,33, 0,34, 0,35, 0,36, 37,0, 37,38, 0,39, 0,40, 40,0, % pattern 0,0,0,0,0,0,0,3,1,3,1,1,3,3,1,1,4,6,1, % tmp: dummy 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 % 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 0,9, 0,10, 11,0, 11,12, 13,0, 13,14, 15,0, 15,16, 0,17, 0,18, 19,0, 19,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 27,0, 27,28, 0,29, 0,30, 0,31, 32,0, 32,33, 0,34, 0,35, 0,36, 0,37, 0,38, 39,0, 39,40, 40,0, % pattern 0,0,0,0,0,0,0,0,3,1,5,1,1,3,1,1,9,4,1, % tmp: dummy 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 % 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 0,9, 0,10, 0,11, 0,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 0,19, 0,20, 21,0, 21,22, 23,0, 23,24, 25,0, 25,26, 0,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 0,34, 35,0, 35,36, 0,37, 0,38, 0,39, 40,0, 40,41, 41,0, % pattern 0,0,0,0,0,2,1,1,7,1,4,1,1,1,1,1,1,3,5, % tmp: dummy 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 % 1,2, 0,3, 4,0, 4,5, 6,0, 6,7, 8,0, 8,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 27,0, 27,28, 29,0, 29,30, 31,0, 31,32, 33,0, 33,34, 35,0, 35,36, 0,37, 0,38, 39,0, 39,40, 0,41, 0,42, 0,43, 0,44, 44,0, % pattern 0,0,0,0,0,0,0,0,9,2,1,3,1,1,1,1,4,2,1, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 14,0, 14,15, 16,0, 16,17, 0,18, 0,19, 20,0, 20,21, 22,0, 22,23, 24,0, 24,25, 26,0, 26,27, 28,0, 28,29, 0,30, 0,31, 0,32, 33,0, 33,34, 0,35, 36,0, 36,37, 37,0, % pattern 0,0,0,0,0,0,0,0,0,1,14,1,1,2,2,2,10,1,2, % tmp: dummy 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 18,0, 18,19, 20,0, 20,21, 22,0, 22,23, 0,24, 25,0, 25,26, 0,27, 28,0, 28,29, 0,30, 31,0, 31,32, 0,33, 0,34, 0,35, 0,36, 0,37, 0,38, 0,39, 0,40, 0,41, 42,0, 42,43, 44,0, 44,45, 0,46, 46,0, % pattern 0,0,0,0,0,0,0,0,0,1,9,2,1,2,6,1,5,3,2, % tmp: dummy 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 21,0, 21,22, 0,23, 0,24, 0,25, 0,26, 0,27, 28,0, 28,29, 30,0, 30,31, 0,32, 0,33, 0,34, 0,35, 36,0, 36,37, 0,38, 0,39, 40,0, 40,41, 0,42, 42,0, % pattern 0,0,0,0,0,0,0,1,9,9,1,2,2,3,1,1,4,3,1, % tmp: dummy 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 13,0, 13,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 0,27, 28,0, 28,29, 0,30, 31,0, 31,32, 0,33, 0,34, 35,0, 35,36, 37,0, 37,38, 39,0, 39,40, 0,41, 0,42, 0,43, 44,0, 44,45, 0,46, 0,47, 48,0, 48,49, 49,0, % pattern 0,0,0,0,0,0,0,0,0,10,1,3,4,1,3,2,1,2,8, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 0,27, 0,28, 29,0, 29,30, 0,31, 32,0, 32,33, 34,0, 34,35, 0,36, 37,0, 37,38, 0,39, 0,40, 0,41, 0,42, 0,43, 0,44, 0,45, 45,0, % pattern 0,0,0,0,0,0,0,0,0,0,9,1,3,5,1,1,1,2,7, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 13,0, 13,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 27,0, 27,28, 29,0, 29,30, 0,31, 32,0, 32,33, 0,34, 0,35, 0,36, 0,37, 0,38, 0,39, 39,0, % pattern 0,0,0,0,0,0,0,4,5,1,2,5,1,3,1,1,2,1,3, % tmp: dummy 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 14,0, 14,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 0,27, 0,28, 29,0, 29,30, 31,0, 31,32, 33,0, 33,34, 0,35, 36,0, 36,37, 38,0, 38,39, 0,40, 0,41, 41,0, % pattern 0,0,0,0,0,1,1,1,1,2,6,2,3,2,1,1,2,3,1, % tmp: dummy 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 % 1,2, 3,0, 3,4, 5,0, 5,6, 7,0, 7,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 0,18, 19,0, 19,20, 0,21, 22,0, 22,23, 0,24, 0,25, 26,0, 26,27, 0,28, 29,0, 29,30, 31,0, 31,32, 33,0, 33,34, 0,35, 36,0, 36,37, 0,38, 0,39, 40,0, 40,41, 41,0, % pattern 0,0,0,0,0,0,0,0,1,6,1,5,7,1,3,3,2,4,3, % tmp: dummy 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 % 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 26,0, 26,27, 28,0, 28,29, 0,30, 0,31, 32,0, 32,33, 0,34, 0,35, 36,0, 36,37, 0,38, 39,0, 39,40, 0,41, 0,42, 0,43, 44,0, 44,45, 0,46, 0,47, 47,0, % pattern 0,0,0,0,0,0,0,0,0,1,2,1,2,9,1,5,2,6,2, % tmp: dummy 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 % 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 8,0, 8,9, 0,10, 11,0, 11,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 21,0, 21,22, 23,0, 23,24, 0,25, 0,26, 0,27, 0,28, 29,0, 29,30, 0,31, 32,0, 32,33, 0,34, 0,35, 0,36, 0,37, 0,38, 39,0, 39,40, 0,41, 41,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,10,2,2,13,1,3,3,1, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 0,28, 0,29, 0,30, 0,31, 32,0, 32,33, 34,0, 34,35, 0,36, 0,37, 38,0, 38,39, 0,40, 0,41, 42,0, 42,43, 43,0, % pattern 0,0,0,0,0,0,0,0,2,2,1,6,2,3,3,2,2,2,1, % tmp: dummy 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 % 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 9,0, 9,10, 0,11, 0,12, 0,13, 0,14, 0,15, 16,0, 16,17, 0,18, 19,0, 19,20, 0,21, 0,22, 23,0, 23,24, 0,25, 0,26, 27,0, 27,28, 0,29, 30,0, 30,31, 0,32, 33,0, 33,34, 0,35, 36,0, 36,37, 37,0, % pattern 0,0,0,0,0,0,0,2,2,1,1,12,2,2,9,2,2,2,2, % tmp: dummy 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 % 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 9,0, 9,10, 11,0, 11,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 27,0, 27,28, 0,29, 30,0, 30,31, 0,32, 0,33, 0,34, 0,35, 0,36, 0,37, 0,38, 0,39, 40,0, 40,41, 0,42, 43,0, 43,44, 0,45, 46,0, 46,47, 0,48, 49,0, 49,50, 0,51, 51,0, % pattern 0,0,0,0,0,0,0,0,0,0,5,1,2,4,1,5,11,2,2, % tmp: dummy 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 17,0, 17,18, 19,0, 19,20, 0,21, 0,22, 0,23, 0,24, 25,0, 25,26, 0,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 0,34, 0,35, 0,36, 37,0, 37,38, 0,39, 40,0, 40,41, 0,42, 42,0, % pattern 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,18 % tmp: dummy 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 % 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 0,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 0,34, 0,35, 0,36, 0,37, 0,38, 0,39, 0,40, 0,41, 0,42, 42,0, ]); row_max_state = 54; row_total_states = 1476; row_num_patterns = 35; row_num_states = [19,26,32,39,43,46,38,41,51,53,42,54,47,42,51,44,40,40,41,44,37,46,42,49,45,39,41,41,47,41,43,37,51,42,42]; % this is also the final state row_start_where = [1,20,46,78,117,160,206,244,285,336,389,431,485,532,574,625,669,709,749,790,834,871,917,959,1008,1053,1092,1133,1174,1221,1262,1305,1342,1393,1435]; % COL_RULES: col_max = 60; col_states = array2d(1..col_total_states, 1..2, [ % pattern 0,0,0,2,3,1,5,1,7,1, % tmp: dummy 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 8,0, 8,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 26,0, 26,27, 27,0, % pattern 0,0,0,2,4,2,3,2,3,5, % tmp: dummy 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 0,15, 16,0, 16,17, 0,18, 19,0, 19,20, 0,21, 0,22, 23,0, 23,24, 0,25, 0,26, 0,27, 0,28, 28,0, % pattern 0,0,2,6,3,1,1,5,1,5, % tmp: dummy 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 0,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 0,21, 0,22, 0,23, 0,24, 25,0, 25,26, 27,0, 27,28, 0,29, 0,30, 0,31, 0,32, 32,0, % pattern 2,4,2,1,1,1,4,1,1,2, % tmp: dummy 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 14,0, 14,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 27,0, 27,28, 0,29, 29,0, % pattern 0,0,0,2,8,2,1,5,2,5, % tmp: dummy 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 27,0, 27,28, 0,29, 0,30, 0,31, 0,32, 32,0, % pattern 0,0,0,3,1,6,2,5,1,5, % tmp: dummy 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 0,9, 0,10, 0,11, 0,12, 0,13, 14,0, 14,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 25,0, 25,26, 0,27, 0,28, 0,29, 0,30, 30,0, % pattern 0,3,3,3,1,1,6,1,1,1, % tmp: dummy 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 9,0, 9,10, 0,11, 0,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 26,0, 26,27, 28,0, 28,29, 29,0, % pattern 0,3,2,2,2,2,8,1,1,3, % tmp: dummy 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 8,0, 8,9, 0,10, 11,0, 11,12, 0,13, 14,0, 14,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 26,0, 26,27, 28,0, 28,29, 30,0, 30,31, 0,32, 0,33, 33,0, % pattern 0,0,0,1,4,4,3,7,1,1, % tmp: dummy 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 8,0, 8,9, 0,10, 0,11, 0,12, 13,0, 13,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 25,0, 25,26, 27,0, 27,28, 28,0, % pattern 0,0,0,1,2,2,2,3,7,9, % tmp: dummy 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 0,15, 16,0, 16,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 0,27, 0,28, 0,29, 0,30, 0,31, 0,32, 0,33, 33,0, % pattern 0,0,1,2,3,1,1,5,2,2, % tmp: dummy 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 0,8, 0,9, 10,0, 10,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 0,18, 0,19, 20,0, 20,21, 0,22, 23,0, 23,24, 0,25, 25,0, % pattern 0,0,0,2,2,3,1,1,6,1, % tmp: dummy 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 0,9, 0,10, 11,0, 11,12, 13,0, 13,14, 15,0, 15,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 23,0, % pattern 0,0,0,0,1,3,1,5,4,1, % tmp: dummy 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1,2, 3,0, 3,4, 0,5, 0,6, 7,0, 7,8, 9,0, 9,10, 0,11, 0,12, 0,13, 0,14, 15,0, 15,16, 0,17, 0,18, 0,19, 20,0, 20,21, 21,0, % pattern 0,0,1,3,1,1,6,1,3,1, % tmp: dummy 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1,2, 3,0, 3,4, 0,5, 0,6, 7,0, 7,8, 9,0, 9,10, 11,0, 11,12, 0,13, 0,14, 0,15, 0,16, 0,17, 18,0, 18,19, 20,0, 20,21, 0,22, 0,23, 24,0, 24,25, 25,0, % pattern 0,0,3,3,4,5,1,4,2,1, % tmp: dummy 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 9,0, 9,10, 0,11, 0,12, 0,13, 14,0, 14,15, 0,16, 0,17, 0,18, 0,19, 20,0, 20,21, 22,0, 22,23, 0,24, 0,25, 0,26, 27,0, 27,28, 0,29, 30,0, 30,31, 31,0, % pattern 0,0,0,0,2,3,3,9,7,1, % tmp: dummy 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 8,0, 8,9, 0,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 0,24, 0,25, 0,26, 0,27, 0,28, 0,29, 30,0, 30,31, 31,0, % pattern 0,0,2,3,2,2,1,1,3,5, % tmp: dummy 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 8,0, 8,9, 0,10, 11,0, 11,12, 0,13, 14,0, 14,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 22,0, 22,23, 0,24, 0,25, 0,26, 0,27, 27,0, % pattern 0,0,4,2,1,1,1,1,2,3, % tmp: dummy 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 9,0, 9,10, 11,0, 11,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 0,19, 20,0, 20,21, 0,22, 0,23, 23,0, % pattern 0,0,0,4,2,2,1,4,3,2, % tmp: dummy 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 0,18, 19,0, 19,20, 0,21, 0,22, 23,0, 23,24, 0,25, 25,0, % pattern 0,0,0,0,0,0,4,3,16,2, % tmp: dummy 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 27,0, 27,28, 0,29, 29,0, % pattern 0,0,0,0,0,1,2,5,7,1, % tmp: dummy 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 20,0, 20,21, 21,0, % pattern 0,0,0,0,4,3,2,2,7,1, % tmp: dummy 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 25,0, % pattern 0,0,0,0,0,2,3,1,10,1, % tmp: dummy 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 8,0, 8,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 21,0, 21,22, 22,0, % pattern 0,0,0,0,2,4,2,1,4,1, % tmp: dummy 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 14,0, 14,15, 0,16, 0,17, 0,18, 19,0, 19,20, 20,0, % pattern 0,0,0,0,0,1,6,7,3,1, % tmp: dummy 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1,2, 3,0, 3,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 18,0, 18,19, 0,20, 0,21, 22,0, 22,23, 23,0, % pattern 0,0,0,0,0,0,3,11,3,1, % tmp: dummy 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 21,0, 21,22, 22,0, % pattern 0,0,0,0,0,7,1,11,2,1, % tmp: dummy 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 9,0, 9,10, 11,0, 11,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 23,0, 23,24, 0,25, 26,0, 26,27, 27,0, % pattern 0,0,0,2,2,2,2,2,2,2, % tmp: dummy 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 0,18, 19,0, 19,20, 0,21, 21,0, % pattern 0,0,0,3,1,1,1,1,2,1, % tmp: dummy 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 9,0, 9,10, 11,0, 11,12, 13,0, 13,14, 0,15, 16,0, 16,17, 17,0, % pattern 0,0,0,2,2,2,2,1,1,1, % tmp: dummy 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 18,0, % pattern 0,0,0,1,1,1,1,2,1,2, % tmp: dummy 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1,2, 3,0, 3,4, 5,0, 5,6, 7,0, 7,8, 9,0, 9,10, 0,11, 12,0, 12,13, 14,0, 14,15, 0,16, 16,0, % pattern 0,0,2,2,2,2,1,1,1,1, % tmp: dummy 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 20,0, % pattern 0,0,0,0,0,4,1,1,2,2, % tmp: dummy 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 8,0, 8,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 15,0, % pattern 0,0,0,0,0,5,2,17,2,1, % tmp: dummy 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 28,0, 28,29, 0,30, 31,0, 31,32, 32,0, % pattern 0,0,0,0,9,2,3,1,4,2, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 14,0, 14,15, 0,16, 0,17, 18,0, 18,19, 20,0, 20,21, 0,22, 0,23, 0,24, 25,0, 25,26, 0,27, 27,0, % pattern 0,0,0,0,9,4,2,1,1,1, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 0,14, 0,15, 16,0, 16,17, 0,18, 19,0, 19,20, 21,0, 21,22, 23,0, 23,24, 24,0, % pattern 0,0,0,0,0,5,4,2,1,4, % tmp: dummy 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 0,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 17,0, 17,18, 0,19, 0,20, 0,21, 21,0, % pattern 0,0,0,11,1,2,1,4,1,2, % tmp: dummy 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 13,0, 13,14, 15,0, 15,16, 0,17, 18,0, 18,19, 20,0, 20,21, 0,22, 0,23, 0,24, 25,0, 25,26, 27,0, 27,28, 0,29, 29,0, % pattern 0,0,0,0,0,3,4,2,4,4, % tmp: dummy 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 0,16, 0,17, 18,0, 18,19, 0,20, 0,21, 0,22, 22,0, % pattern 0,0,2,1,4,1,2,1,5,2, % tmp: dummy 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1,2, 0,3, 4,0, 4,5, 6,0, 6,7, 0,8, 0,9, 0,10, 11,0, 11,12, 13,0, 13,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 26,0, % pattern 0,0,0,0,0,8,4,1,1,2, % tmp: dummy 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 0,13, 0,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 0,21, 21,0, % pattern 0,0,0,0,0,1,1,3,2,3, % tmp: dummy 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1,2, 3,0, 3,4, 5,0, 5,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 0,15, 15,0, % pattern 0,0,0,0,1,3,1,8,1,6, % tmp: dummy 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1,2, 3,0, 3,4, 0,5, 0,6, 7,0, 7,8, 9,0, 9,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 18,0, 18,19, 20,0, 20,21, 0,22, 0,23, 0,24, 0,25, 0,26, 26,0, % pattern 0,0,0,0,0,0,2,1,7,14, % tmp: dummy 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 14,0, 14,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 0,22, 0,23, 0,24, 0,25, 0,26, 0,27, 0,28, 28,0, % pattern 0,0,0,1,2,4,4,1,2,3, % tmp: dummy 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 0,14, 0,15, 16,0, 16,17, 18,0, 18,19, 0,20, 21,0, 21,22, 0,23, 0,24, 24,0, % pattern 1,1,4,2,1,1,1,1,1,4, % tmp: dummy 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1,2, 3,0, 3,4, 5,0, 5,6, 0,7, 0,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 21,0, 21,22, 23,0, 23,24, 0,25, 0,26, 0,27, 27,0, % pattern 0,0,0,0,3,5,3,1,1,4, % tmp: dummy 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 0,14, 15,0, 15,16, 17,0, 17,18, 19,0, 19,20, 0,21, 0,22, 0,23, 23,0, % pattern 0,0,0,0,2,4,2,2,1,2, % tmp: dummy 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 17,0, 17,18, 0,19, 19,0, % pattern 0,0,0,0,0,4,2,3,8,4, % tmp: dummy 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 9,0, 9,10, 0,11, 0,12, 13,0, 13,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 0,24, 0,25, 0,26, 26,0, % pattern 0,0,0,0,0,4,15,2,2,4, % tmp: dummy 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 0,24, 25,0, 25,26, 0,27, 28,0, 28,29, 0,30, 0,31, 0,32, 32,0, % pattern 0,0,0,0,4,1,10,2,1,2, % tmp: dummy 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 8,0, 8,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 19,0, 19,20, 0,21, 22,0, 22,23, 24,0, 24,25, 0,26, 26,0, % pattern 0,0,0,0,2,12,6,1,2,4, % tmp: dummy 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1,2, 0,3, 4,0, 4,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 26,0, 26,27, 0,28, 29,0, 29,30, 0,31, 0,32, 0,33, 33,0, % pattern 0,0,0,3,1,3,1,3,3,4, % tmp: dummy 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 0,9, 0,10, 11,0, 11,12, 13,0, 13,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 21,0, 21,22, 0,23, 0,24, 0,25, 25,0, % pattern 0,0,0,0,3,1,2,3,4,1, % tmp: dummy 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 0,13, 14,0, 14,15, 0,16, 0,17, 0,18, 19,0, 19,20, 20,0, % pattern 0,0,0,5,2,2,2,3,3,3, % tmp: dummy 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 16,0, 16,17, 0,18, 0,19, 20,0, 20,21, 0,22, 0,23, 24,0, 24,25, 0,26, 0,27, 27,0, % pattern 0,1,2,2,2,2,4,1,1,3, % tmp: dummy 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0 1,2, 3,0, 3,4, 0,5, 6,0, 6,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 0,17, 0,18, 0,19, 20,0, 20,21, 22,0, 22,23, 24,0, 24,25, 0,26, 0,27, 27,0, % pattern 0,0,0,2,1,4,2,7,1,1, % tmp: dummy 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1,2, 0,3, 4,0, 4,5, 6,0, 6,7, 0,8, 0,9, 0,10, 11,0, 11,12, 0,13, 14,0, 14,15, 0,16, 0,17, 0,18, 0,19, 0,20, 0,21, 22,0, 22,23, 24,0, 24,25, 25,0, % pattern 0,0,0,0,5,2,2,3,6,3, % tmp: dummy 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1,2, 0,3, 0,4, 0,5, 0,6, 7,0, 7,8, 0,9, 10,0, 10,11, 0,12, 13,0, 13,14, 0,15, 0,16, 17,0, 17,18, 0,19, 0,20, 0,21, 0,22, 0,23, 24,0, 24,25, 0,26, 0,27, 27,0, % pattern 0,0,0,3,3,2,2,3,2,3, % tmp: dummy 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1,2, 0,3, 0,4, 5,0, 5,6, 0,7, 0,8, 9,0, 9,10, 0,11, 12,0, 12,13, 0,14, 15,0, 15,16, 0,17, 0,18, 19,0, 19,20, 0,21, 22,0, 22,23, 0,24, 0,25, 25,0, % pattern 0,0,0,4,1,2,1,1,2,1 % tmp: dummy 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1,2, 0,3, 0,4, 0,5, 6,0, 6,7, 8,0, 8,9, 0,10, 11,0, 11,12, 13,0, 13,14, 15,0, 15,16, 0,17, 18,0, 18,19, 19,0, ]); col_num_patterns = 60; col_max_state = 33; col_total_states = 1504; col_num_states = [27,28,32,29,32,30,29,33,28,33,25,23,21,25,31,31,27,23,25,29,21,25,22,20,23,22,27,21,17,18,16,20,15,32,27,24,21,29,22,26,21,15,26,28,24,27,23,19,26,32,26,33,25,20,27,27,25,27,25,19]; % this is also the final state col_start_where = [1,28,56,88,117,149,179,208,241,269,302,327,350,371,396,427,458,485,508,533,562,583,608,630,650,673,695,722,743,760,778,794,814,829,861,888,912,933,962,984,1010,1031,1046,1072,1100,1124,1151,1174,1193,1219,1251,1277,1310,1335,1355,1382,1409,1434,1461,1486];