diff --git a/GCJ2016/Factory/D-large-practice.in b/GCJ2016/Factory/D-large-practice.in new file mode 100644 index 0000000..db812ff --- /dev/null +++ b/GCJ2016/Factory/D-large-practice.in @@ -0,0 +1,2155 @@ +100 +2 +11 +10 +2 +10 +00 +3 +000 +000 +000 +1 +1 +3 +000 +110 +000 +12 +000000000000 +000000000000 +000000000001 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000001000 +23 +00000000100000000000000 +00000000001000100000000 +00000000000000000001000 +01000000000000000000000 +00000000000000001000100 +00100000000001000110001 +00000000100000000000000 +00010000010010000000000 +11001000000100000000000 +00000000000101000000000 +00000000000000010000000 +00000000000000010000000 +00000100011000000000000 +00000000100000000000000 +00000000100000010000000 +00000001000000000010000 +00000010000100000010110 +10100000000000000000100 +00001000000000000000000 +00000000000000010000000 +00100000000000000000100 +00000100000000000001000 +00100000000000000000000 +12 +001000000000 +000100100000 +001000000000 +100100100001 +000000000000 +010001101000 +001000000000 +001000000000 +001000000000 +010000100011 +010010000110 +001000000000 +23 +00000000000000000000000 +00001000000000000010000 +00000010001000000100000 +00000000000000000000000 +00000100000000000000000 +00000000000000000000001 +10000000000000000000000 +00000000000000000000000 +00000000010001000000001 +00000100000000000000100 +00000001000000000000000 +00000000010000000000000 +00100000100000000000000 +00000000000000000000010 +00000000000000000000000 +10000000000000100000000 +00000000000000000001000 +00000000001000000000000 +00001001000000000000000 +00000010000000000000000 +00010000000000000000000 +00010000100000000000000 +00000000000000101000000 +25 +0000000001000000000000000 +0000100000101000000000000 +0000000100000000000000000 +0000100010100000010000000 +0000100000000000010001000 +0000110010100100010000010 +1000000000000000000000000 +0000000100000000000000000 +0010000000000000000000000 +0000100000000000000000010 +0000010010101000010000010 +0000000000000000000010101 +0000001000000000000000000 +1000000000000000000000000 +0000010000000000011000000 +0000010000000100001001000 +0000000001000000000100000 +0110000000010000000000000 +0000000010000000000000000 +1000000000000000000000000 +0000000000000000000000000 +0000010000001000010001000 +0000000000010010000000000 +1000001000000000000000000 +0000000001000000000000000 +25 +0000000100000000000010000 +0000001000000000000000001 +0000000000000000000000000 +0000000000010000000001000 +0100000001000000000000000 +0000000000000100000000000 +0110000010000000000000000 +0000000000000000000000000 +0000000000000000010000010 +0000000000000000000000000 +0000000000000000000101000 +0000000100000000000000000 +0000000000000001000000000 +0000000000000000000000000 +0000001000000000000000000 +0000000000000000000000000 +0000000000000000101000000 +0000000000000001000000000 +0000000000000000000010000 +0000000000000100000000000 +0000000000000000000000000 +0000000000000000000001000 +0000000010000000000000000 +0000001000000000000000000 +0000000000000000000000000 +25 +0000000000000000000001000 +0101010000001000000000111 +0000000000000001010000000 +0000000000000100000000000 +0110010000111010001000001 +0000000100000000000000000 +0000000100000000000000000 +0000000000000000000001000 +0000000100000000000000000 +0000000000001010001000111 +0000000000000000000001000 +0000000001000000100100000 +0000000000000000000001000 +0011000000010000011000000 +0000000100000000000000000 +0000000000000000000001000 +0000000000010010001000000 +0000000100000000000000000 +0000000000000000000001000 +0000000100000000000000000 +1000000010000100000110000 +0000000100000000000001000 +0000100000000000100000000 +0001011000101010001000001 +0110000000111000000000010 +24 +000010000000000000000000 +000000000000000000000100 +000010000000000000000000 +000000000100000000100001 +000000000000000000000100 +000000000000000000000000 +001000000000000000000000 +000000000000000000000000 +000000000000000000000000 +010000000000000000000000 +000000000000000000000100 +000001000000000000000000 +000000000000000000010000 +000001000000000000000000 +000000010000000000000010 +000000000000000000000000 +000010000000000000000000 +000000000000000000000000 +000000100001001010000000 +000000010000000000000010 +000000000010100000000000 +000000000000000000000000 +000010000000000000000000 +000000000000000000000000 +23 +00010100010010100100000 +00000000110011000000100 +10010110000001100010001 +00010110110000000110000 +00100110110010000111101 +10110000000011100000101 +00110100000000100000000 +10000110100011000101001 +01001001001100011000010 +00000100000010000100101 +10100100110001000010100 +00100010110011000001001 +10000100010001000010001 +10010000000000100101001 +10110000000010000000000 +10000110110010100101001 +00010000000011100101101 +10100000110010100000101 +00010110010000000000101 +10100000000010100101000 +10000110000001100000000 +10000010010000000100000 +00010110010011100010101 +24 +000010000000000000000000 +000000000000000000100000 +000010000000000000000000 +010000110100000000001001 +100000000000001000000000 +000001000000001000000000 +000010001000000000000000 +000101000000000000000000 +000000000001000110001100 +000000001000000000000000 +000000001000000000000000 +000000000000000000100000 +000000001000000000000000 +000000001000000000000000 +000000000000000000010000 +000000001000000000000000 +000000001000000000000000 +000010000000000000000000 +000001000010000000010000 +000010000000000000000000 +000010000000000000000000 +000000001000000000000000 +001000000100110001000010 +000000001000000000000000 +25 +1000010000000000000000000 +0000000000010000000000000 +0000000000000000010010000 +0000000000000000000000000 +0000000000000000000001000 +0000100000000000010000000 +0000000000000000000000001 +0000000000001000000100000 +0000000000000000000000000 +0000000000000000010001000 +0000000000000010000000000 +0000000000100000100000000 +0000000000000000000000000 +0000000000000010000000000 +0000000000001000000000000 +0000000000001000000000000 +0100000000000000000000000 +0000000010001100000000000 +0000001001000001000000000 +0000000000000000000000011 +0000001001000001000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +12 +000000000100 +000000001000 +000000000100 +000001000001 +000000100100 +000000000010 +000010101100 +000000000010 +011000000000 +100001010000 +000000010000 +000100000000 +25 +0000000000000000001000000 +0010000000010000000000000 +0000000000000000001000000 +0000000000000000100000000 +0000000000000010000000100 +0000001000000000000000000 +0000001000000000000000000 +0000000000000000100100000 +0000100000000000000000000 +0010000000000000000000000 +0100000000000100000011000 +0000000000010000000000000 +0000000000000100000000100 +0000000000001000000000001 +1001000001100001010000010 +0000000000010000000000000 +0000000000000000000100000 +0000000000000000000000100 +0000000100000010000000000 +0000000010000000000100000 +0000000000000000000100000 +0000001000000000000000000 +0000000000000000000000001 +0000000000000000000100001 +0000101000000000000000001 +25 +1110000000000000000000001 +0000000000000000000001000 +0000000000001000000000000 +0000100000010011110000000 +0100000000000000000011001 +0000000000000000000000000 +0000000010000010000000000 +0100000010001000000000000 +0000000000000000000000000 +0000001010000000001001000 +0000001000001000110101000 +0001100000001000000000100 +0000000000000000101000000 +0100000000000000100010000 +0000011000000000000000000 +0000000100000001100000000 +0000100000100110000000000 +0000000000001000000000001 +0000001000000000100001000 +0000000000000000000100000 +0000010000100000000000000 +0000000000000000000000000 +0100000000000000000000010 +0000100000001000000011001 +0100000000100000100000000 +23 +00000000000010010000000 +01000000000000001000000 +00000000000000010000000 +00000100000000000000000 +00000001111000000000000 +00000100000000000000010 +00000010000000000001000 +00000000000000000010001 +10000000000000000000000 +00000000000010000000000 +00000000000000010010000 +00011000000000000000000 +00000000000000000000100 +00000000000000000000000 +00000001010000000000000 +10000000000000000000100 +00000000000000000000100 +00000000000000000000100 +00000000001000000000000 +00000000000000000100000 +00000000000000010000000 +00000000000000000000001 +00000000000000100010000 +12 +000100000010 +000000000010 +000000000000 +000000101100 +000000000100 +000000000000 +001001000000 +000000100001 +010000010000 +000100000010 +000000000000 +000000000000 +25 +0000000001000000101000000 +0000000001100100100000100 +0000000000000000000000000 +0000000001001000010000000 +0100000010100010000001011 +0000000010000000100001001 +0000010000000000000001010 +0010000000100100000000000 +0000000000010000010000101 +0100000010100000000000001 +0000000000000100000000000 +0000000010010100000100010 +0000000000000000100000000 +0000000000000000010000000 +0000010000000000000001001 +0001000000000100000000000 +0001001000000000000000001 +0010000100001000000000000 +0000000000000000000010100 +0000000000000000000000000 +0001010000000001001000000 +0000000011001000000000000 +0000100000000000100000000 +0001000000000000000000000 +1000000000000000010000001 +24 +010000000010100000000001 +100000000000000000000000 +000000000100000001001000 +000000000000000000101000 +100000000100000000000000 +000000010000000000000000 +100000000000000000100010 +000000000010000100000001 +001000000000001010000000 +000000000010000000000000 +000000000001001000000000 +000000100000000000000000 +000100001000000000001000 +000000000000000000010000 +000010000000010000000000 +001010000000000000000000 +000001000010000000000000 +000000000010000000010100 +000000010000000000000000 +000000000000000000000010 +100000000000000000000010 +000000001000000000000000 +100000000000000000001000 +000000100000000000000000 +24 +000001000000000000000000 +000000000110000000000001 +000000000000000000000100 +000000100000001000000000 +000001000000000000000000 +000000000000000001000000 +000000000000000010000000 +000000000000100000000000 +000000001001000000000000 +000000000000000000000100 +100000000000000000000000 +000000000000000000001000 +000000001001000000000000 +000000000000000000000001 +000010010000000000000010 +011100000000000100000000 +100000000000000000010000 +000000000000010000100000 +000000000000000001000000 +000000000000000000000100 +000000000000000000000100 +000000000000000001000000 +000000000000000000010000 +000000000000100000000000 +25 +0000000000000000001000010 +0000000000100000000000000 +0000000000000000001000000 +0100000000000000000000000 +0000000000000000000100001 +0000000000100000000000000 +0000000000000000000100000 +0010100100001000000000000 +0000000000000000010100001 +0000000000100000000000000 +0000000000000000001000000 +0000001000000000000000000 +0001010000000100000001100 +0000000000100000000000000 +0000000000010000010100000 +1010000000000000000010000 +0000000000000000000000000 +0000001000000000000000000 +0000001000000000000000000 +0000000000000101000000000 +0000000100001000000000000 +0000000001000000000100000 +0000000000000010001000000 +0100001000000000000000000 +0000000000000000000001000 +25 +1111001111101101011110100 +1111001111101101011110100 +0000110000000010100000000 +1111001111101101011110100 +0000000000010000000001011 +0000110000000010100000000 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +0000110000000010100000000 +0000000000010000000001011 +0000000000010000000001011 +1111001111101101011110100 +1111001111101101011110100 +0000000000010000000001011 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +1111001111101101011110100 +0000110000000010100000000 +1111001111101101011110100 +1111001111101101011110100 +23 +00000000000000000000000 +00000100000000010010100 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +00010010000000000000000 +10100001011011101101000 +00000000000000000000010 +01000000100000000000000 +00000010000000000000010 +00000000000100000010001 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +10100001011011100101000 +10100001011011101101000 +10100001011011101101000 +10100001011011101101000 +00001000000000010000000 +12 +000001000000 +000000000000 +010000000000 +000000000001 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000001000 +000000000000 +000000000000 +23 +00000001000000000000000 +10000000010110100001101 +01000100001000010100010 +00000001000000000000000 +10000000010011000000101 +00000001000000000000000 +00000001000000000000000 +01101100101000010110010 +00000001000000000000000 +10000010010100100001101 +10000010000010100001101 +00010010000110101001000 +10000010010101001001100 +10000000000100101000001 +00000000000100101000000 +10010000000101101001100 +00000001000000000000000 +10010000010010001000001 +00000001000000000000000 +00000001000000000000000 +00000001000000000000000 +00000001000000000000000 +00010000000110001000000 +24 +001000000000000000000000 +000000000000010000000000 +000000000000000000000100 +000000000000010000000000 +001000000000000000000000 +000000000000000000000100 +001000000000000000000000 +000010001000101000001000 +001000000000010000000000 +000000000000000000000000 +000000000100000001000000 +000000000000100000000011 +000000011000000110100000 +100100000000000000000000 +000000000000010000000000 +010001000011000000000000 +000000000000000000010000 +000000000000000000000100 +000000000000010000000000 +000000000000000000000100 +000000000000010000000000 +000000000000010000000000 +001000000000000000000000 +000000100000000000000000 +23 +00000000001000000000000 +00000000000000000001000 +00000000001000100000000 +00000001000000000100000 +00000010000000000100000 +00000000000100000000000 +10000000000000000000000 +00000000000000010000000 +00000000000000000000000 +00000000100010000010001 +00000100000001000001000 +00100000010000000000111 +00011000000000000000000 +00000000000100000000000 +10010000000000000000000 +10000000000000010000000 +00001000000000001000000 +00000000001000000000000 +01000000000000100000000 +01000000000000000000000 +00001000000000000000000 +00000000000000100000000 +00000000000100100000000 +24 +000000000000000000010000 +000000000000000000100000 +000000001000000000000000 +000000000000001010000000 +001000000000000000000000 +001000000000000000000000 +000000000000101100000000 +000000000010000000000000 +000000000000000000110000 +000000000000000000000001 +100001000001010000000000 +010000000000000000000000 +000000000010000000000000 +001000001010000000000000 +000000000000000000100000 +000110000100000000000000 +000000010000000000010000 +000000000000000000000001 +000000000100000001000010 +000000000000000000001000 +000100000000000000000100 +000100000000000000000000 +000000001000000000000000 +000000000101000000000000 +12 +000000000000 +000000000010 +000000000010 +100100110101 +011010001000 +010011001000 +011001001000 +000000000010 +000000000010 +010000001000 +000000000010 +000000000000 +25 +0000000001100000001000000 +0000000000000000001000000 +0100000000001100000001100 +0000000001000000001000000 +0000000001100000001000000 +0000000000000000001000000 +0000000001100000001000000 +0000000000000000000100000 +0000000100000001000000010 +0000000001100000001000000 +0000100000000000100010000 +0000000001100000001000000 +0000000000000000000100000 +0000000001100000001000000 +0000000000000000000010000 +0000000000000000000100000 +0001100000000000000000000 +0000000000000010010100000 +1110011010010000000000101 +0000000000000000100000000 +0000000000100000000000000 +0000000001100000001000000 +0001000000000000000010000 +0000000000000001000000000 +0000000000100000001000000 +24 +100000000000000000001000 +010000000000000000000000 +000100000000001000000000 +001000000010000000000000 +000000000000000000001000 +000100000000000000000000 +000000010000000100011100 +000000100000000000000011 +000001000000000000000000 +000001000000000000000000 +000000001000000000000000 +000000010000000010000000 +000000000000000111100000 +000010000000000000000001 +000100000000000001100100 +100000000011000001000000 +000000001100110100000000 +000000000000001100000000 +000000010000000000100000 +001100001000000100000000 +000000100000000000000001 +000000000000000010000000 +000000000000000100000000 +000000001000001000000000 +12 +000000101000 +010000000000 +000000001000 +001100000100 +100000000000 +000010000000 +000000000100 +000000001000 +100000010000 +001000000000 +010001000001 +000010010010 +25 +0000001000000000000001010 +0010110000000100000000000 +1001000000000000000000000 +0000000000100000000000010 +0000000010000010000100000 +0000000000000010000000000 +1000000000000000000000000 +0000000000000000100000000 +0000000000000000000000100 +0000000000000000001000000 +0000000000000000000000100 +0000000010000000000100000 +0100000001000000101000100 +0100000000000000000000000 +0000000100010000000100000 +1000000000100000000000001 +0000000001001000000000100 +0000000000001000000000000 +0001001000000000000000000 +0000000000000101000010000 +0000000000000000000000001 +1001000000000000000000011 +0000001000100000010000010 +1000000000000000000000001 +0001000000100000000000000 +12 +001000000000 +100000000001 +000100111000 +011000000000 +001000000001 +010000000000 +000010000000 +000001000010 +000000000000 +000000000001 +000010000000 +000000000110 +24 +000000000000000100110000 +000010000000000000000000 +000010000000000000000000 +000000000001000000000000 +001000000000000000000001 +000010000000000000000000 +100000010000000000000000 +000010000000000000000000 +000000000001000000000000 +000000000000000100110000 +000010000000000000000000 +000000000000000001000000 +000000000000000100100000 +010101100100111010001000 +000000000000000100110000 +000000000000000000000000 +000000000000000000000110 +000000000000000100010000 +000000000001000000000000 +000000000000000000000000 +000010000000000000000000 +000000001000000001000000 +000000000000000000000110 +000000000001000000000000 +24 +010000000000000000000000 +100000000100000000100000 +000001100000001000000011 +000000001000000000000000 +000000000000000000001100 +001101000011001001010010 +000000001000000000000000 +000110000000000000000010 +000000000000000000000100 +000110000001000000000010 +000000001000000000000000 +000000001000000000000000 +000000000000000010000000 +001000000000000001010000 +010000000000000010000000 +000110000000000000000001 +000000000000100000000000 +000000000000010000000000 +001010000010000000000010 +000000001000000000000000 +000111000001001101010000 +000100100001000100000001 +000000000000000000100000 +000000000000010000000000 +25 +0000000000000000000000010 +0000000001000000000000000 +0000000000000101000100000 +0000000000000000100000000 +0000000000000000000000001 +0000010000010010000000000 +0000000000000010000000000 +0000000000010000000000000 +0001000000000000001000100 +0000001010000000000011000 +0000000000000000000000010 +0000100100000001000000000 +0000000000000100000000000 +1000000001000000000100000 +0000000100000000000000000 +0000000000000000100000010 +0000000000010000001000000 +0010000000001000010000000 +0000000000000000100000000 +0001000000000000000000000 +0000000000000000000000001 +0001000000000000000000000 +0100000000000000000100000 +0000000000100000000000010 +0000000000000000000000001 +24 +000000000100001000000100 +000010000000000100000000 +000000000010000000000000 +000000010000000000000000 +000000000100000010001000 +000000000000000000000000 +010000000000000000000000 +000000000000001010000100 +100000000001000000000000 +000010000000000001000000 +000100000000010000000000 +000000000000010000000000 +000000000000000000000000 +000000000000000000000000 +000000000000001000000100 +000000000000000000000000 +000000000000000000000001 +000000010000000000000000 +000001001000000000000000 +000000000000000000000000 +000000000000000000000000 +110000000001100000000000 +000000000000000100000000 +100000000001000000000000 +24 +100000000000010001000000 +001000000000000000000000 +100000000000000000000000 +000000000000000000001001 +000001000000000010000100 +000000000000010000000000 +000000000100000100000001 +000000000000000000000000 +000000100000000000000000 +000000000000000100000000 +000100000000000000010000 +001000000000000000000000 +000000010000000000000000 +000000001000000000000000 +000000001000000000000000 +000000000000000010000000 +000000000000000000001000 +010000000000001000000000 +000000000000000010000000 +000000000000000000000000 +000000000000000000000010 +000000000010000000000000 +000010001000000000100000 +000000000000000000000000 +12 +100001010000 +001000110001 +000100010010 +011000000000 +000000000100 +000010000000 +000010000000 +000000000100 +000000000100 +000000000100 +000000100000 +000010000001 +12 +000000000010 +000001100000 +100000000000 +000000000001 +000000000001 +000000000001 +001000001000 +010000000000 +000000000001 +010000000000 +000010010000 +000000000001 +23 +00000000000000100000001 +00000000000000000000000 +10000000000000010000010 +00000000000000000000000 +00000000001000000000000 +00000000000000000000000 +00000000000000000000000 +00001000000000000000000 +00000000000000000000000 +00000000001000000000000 +00000000000100000100000 +00000000000100000000000 +01000000000000000000000 +00000000000000000000000 +00000000001000000000000 +10000000000000000000000 +00001000000000000000000 +00000000000001001010000 +00000000010000000000000 +00000000100100000000000 +00000000000000000000000 +00000000000000010000000 +01000000000000000000000 +25 +0100000000001000100010000 +0100000000000000100010000 +1000000010000000010000000 +0000100100110010001101111 +0100000000001000100010000 +0001001001000000000000000 +0100000000001000100010000 +1000000010000000010000000 +0000100100110011001101111 +0000100100110011001101111 +0010000000000100000000000 +1000000010000000010000000 +0000000000000000000000000 +1000000010000000010000000 +0100000000001000100010000 +0100000000001000100010000 +0010000000000100000000000 +0000100100110011001101111 +0100000000001000100010000 +0000100100100011001101111 +0100000000001000100010000 +0001011001000000000000000 +0000100100110011001101111 +0000100100110011000101111 +0100000000001000100010000 +25 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000001110000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +1111111110001111111111111 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000000000 +12 +101001010101 +101001010101 +000000000010 +101001010101 +000000101000 +000000000010 +101001010101 +010000001000 +000000001000 +000110000000 +100001010100 +001000010101 +25 +0000000001000000000000000 +0000000001000000000000000 +0000000000010000000000000 +0000010000000000000000010 +0000000000000110000100000 +0000000000010000000000000 +0000000000000000000000000 +0000000000000000000000000 +1000000000000000001010000 +0000000000000000000000000 +0000001000000000000000000 +0000001000000000000000000 +0000000000000000000000000 +0000000000000000100000000 +0010000000000001000000000 +0000000000000000000000000 +0000010000000000000000010 +0001000010000000000001001 +0000000000000000100000000 +0000000000000100000000000 +0000000001000000000000000 +0000000000000000100000000 +0000000000000000000000000 +0000000001000000000000000 +0000010000000000000000000 +23 +00010000000000001000000 +00010000000000000000000 +11000110000010000001000 +00000000100000000000000 +00000001000000000000000 +00000000000000001000000 +00001000011000110000101 +00000000100000000000000 +00000000100000000000000 +00100000011101000000111 +00010000000000000000000 +00000000100000000000000 +00000000100000000000000 +11000110000010000001000 +00000001000000000000000 +00000000000000001000000 +00000000100000000100000 +00000000100000000000000 +00000001000000000100000 +00000000100000000000000 +00000001000000000000000 +00101000011001110010111 +00000000000000001000000 +12 +100000010011 +001010001000 +000000000010 +000000001000 +000010000000 +001000000000 +000001000000 +100100000000 +000001000001 +000001000001 +010000100100 +010000100100 +24 +000000000010000000000000 +000100010100000000000001 +000000000100000001100010 +000000000000000010000000 +100000000000000000000000 +100000000000000000000000 +000010000000110000000000 +001101000000000000100100 +100000000000000000000000 +000000000000010000000000 +100000000000000000000000 +000000100010000000000000 +100000000000000000000000 +000001001000001001010000 +000000100010000000000000 +000000000010000000000000 +100000000000000000000000 +010000000100000100001000 +100000000000000000000000 +000000100010000000000000 +000000100000000000000000 +000000010000000000000000 +000000000001010010000000 +100000000000000000000000 +23 +00000000000100000100000 +00000010110010000000000 +00000000010000000010000 +10000100000000000000000 +10000000000000000000000 +00001000000000000100000 +01010000000000000000000 +00000000000000000000000 +00000000000000000001000 +00001000000000000000000 +01000000000000000000000 +01000000000000000000000 +00010000000000000000000 +10000000000001000000000 +00000000000000101000000 +00000000000100000000000 +00000000000000011000001 +00100000000000000000000 +00100000000000000000000 +00001000000000000000000 +00010001000000000000000 +10000000001000000000000 +00000000000000000001000 +25 +0000000000000000001000000 +0001000000000000000100000 +0000000000000100000000000 +0000011000000000000000000 +0000000100000000000000000 +1000000000100000000000000 +0000000000000000000000001 +0000000000000000000000001 +0001000000000000000000010 +0000000000000100000000000 +0100000000000000000010000 +0000010000000000000000000 +0000000001000000000000000 +0000000000000000000000001 +0000100000000000000000000 +0000000000000000001000000 +0000100000000000000000000 +0000000000000000000000001 +0000000000000010100001100 +0000000000000000010000000 +0000000000000000001000000 +0000000010001001000000000 +0010000000000000000000000 +0000000000010000010000000 +0000000000010000010000000 +25 +0000000000000000000000010 +0000000000000000000000100 +0000000000001000000000000 +0000000000000000000010000 +0000000010000000000000001 +0000000000000000001010100 +0000000000100001100000000 +0000000000010000000101000 +0000000000000010000010010 +0000000000000100000000000 +1000000000100100000000001 +0101000001001000000010000 +0000110100000000010100000 +0000000000000000001000000 +0000000000000110000000000 +0000000000000001000000000 +0000000000000000000010000 +0000000001000000000000000 +0000000010000000000000000 +0000000000001000000000000 +0000000000000000000010010 +0001000000000000000000000 +0000001001000000000000000 +0010000000000001000000000 +0000000000000000001000000 +24 +000000101000000010000000 +000000000000000010000000 +000000000001000010000000 +000000000000000000010000 +010100000000000000000000 +000001000000000001000000 +100000000000000000000000 +000000000010010000000010 +000000000000000000010000 +000000000000000000000000 +100000000000000000000000 +000010000000000000000000 +000000000000000000000000 +000000000000000001000000 +000000000000000000000000 +000000000000000000000000 +000000000000101000000000 +000000000000000000010000 +000010000000000000000000 +000000000000000000000000 +000000000000000000000000 +000000000000000000000000 +000000000000000000000000 +000010000000000100000100 +25 +1000000000000000100000000 +0000000000000000000001000 +0100010000000000000010000 +0000000100000000000000000 +0000000000000100000000000 +0000000000000000000000001 +0000000110000000000000000 +0000000010000000000000000 +0000010000000100000000001 +0000000000000000000001000 +0000000000000000000001000 +0000000000100000100000000 +0100000000000000000000000 +0000000000100001000000000 +0000000000000000000001000 +0011101001011010001100110 +0000000000000000000001000 +0000000010000000000000000 +0000000100000000000000000 +0000000000000100000000000 +0000000000000000000000001 +0000000000000000000001000 +0000000000000000010000001 +0000000000000100000000000 +0000000000000000000001000 +23 +00000000000000000100000 +00011000000100001011011 +00000001000000000000000 +00000000010000000000000 +00000000100000000000000 +00000010000000000000000 +00000000000000100000000 +00000000010000000000000 +00100010000010000000000 +00000010000000000000000 +10000000001001010001100 +00000000000000100100000 +00000000010000000000000 +00000001000000000000000 +00000000010000000000000 +00000000000000000100000 +00000000010000000000000 +00000000100000000000000 +00000000100000000100000 +00000100000010000000000 +00000001010000000000000 +00000000000000100000000 +01000010000000000000000 +12 +000010000000 +000000010000 +000000100000 +000110000000 +001000000000 +000000001101 +000000010000 +100000000000 +000000000100 +001000000000 +100000000000 +000010000010 +23 +00000000000000000010000 +00000000000000010000000 +00000000000000000100000 +00011110000000000000000 +00000000000000000100000 +00000000000000000000010 +00000100010011000000000 +00000010001000000001000 +00000000000000000000100 +00000000000100010000000 +00000000000000000010100 +10000001100000001000000 +01000000000100000000000 +00000000000000000000011 +00000000000100000000000 +00000000000000010000000 +00000000000000010000010 +00000000000000010100000 +00000000000000000000010 +00000000000100000010000 +00000000000000000000001 +00000000000000000000100 +00000010000000101000000 +23 +00000100000001000000000 +00011000000000000000000 +00010000000000000000000 +00000100000100000000000 +00011100000010000100000 +00000000000000000000000 +00000010000000000000000 +01000000000000110000000 +00001000000000000000000 +10100000100000000000010 +00000000000100100000000 +00100000000000000000000 +00000010000000000000000 +00000010000000100000000 +00000000000000000001100 +00000000100000000000000 +00000000010000000000000 +00000000100000000000000 +00000001000000000001000 +00000010010000000010000 +10100000001000000010000 +00000001000000000000000 +00000000000000001000100 +25 +0100000000000000000000000 +0000000000101001000000000 +0000001100000010000000000 +0000000000000000000000000 +0001000000000000000000000 +0010000000000000001000000 +0000000100000000001000000 +0000000000100000000000000 +0000000000000000000010000 +0000100000001000010000000 +0000000000000000000100000 +0000000010000000001000000 +0001001000000000000000000 +0000000000000000001000000 +1000000000000000000001000 +0000000000000000000000010 +0000000000000000000000000 +0000000000000000000000000 +0000000000100000000000000 +0000001000000000000000000 +0010010000000000100000000 +0000100000111000000000000 +0000000000001100001000000 +0000000000000000010000000 +0000000000000000000000000 +25 +0000000000001010000000000 +0000000000000000100000000 +0000010000000000000000000 +0000000000001000000000000 +0000000000001000000000010 +0000000000000000100000000 +0000000000000010000000000 +0000000000000000001000000 +0000000000010000000000000 +1110001101000000000000000 +0001000000000000001000000 +0000100000000000000000000 +0000000000000000010011100 +0000000010100000000000000 +0000000010100001000000000 +0000000010100001000000000 +0000000000000000000000001 +0000000000000000000100000 +0000000000000000100000000 +0000000000000100000100000 +0001010000000000000000000 +0000100000010000000000000 +0001000000000000000000000 +0000000000000000100000000 +0000100000000000000000000 +25 +0000000000010011000000100 +0000000000000000010000000 +0000010000000000100000000 +0000000010000000000000000 +0000000000000000000000001 +0000000010000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000000000001000010000000 +0000000000000000010000000 +0000000000000000000000010 +0000100000000000000001000 +0000000000000000010000000 +0000000000000000000000010 +0100000000000000000000000 +0000000100000000100000000 +0000001000100000000000000 +0000000000000000000000001 +0000000000000000000000010 +0000000000000100001100000 +0000000010000000000000000 +0000000010000000000000000 +1011000000000000000000000 +0000000001000000000010000 +0100000000000000000000000 +24 +000000000010000000000000 +001000000000000000000000 +000000000000100100000100 +010100001000000000000000 +000010000000000000000000 +001000000000000010000000 +010000000000000000000010 +100000000000000000000000 +000000000000010000000000 +000000010000000000100000 +000000000000000000010100 +100000000000000000000000 +000010000000000000010000 +000000000100011000000000 +001001000000000000000000 +001000000000000000001000 +001000000000000000000000 +000000100000000000100000 +000100000000000000000000 +000000000000010000000000 +000000000001000010000000 +000000000000000001010000 +000000000010000000000000 +000000000000000001000000 +12 +000000000000 +000000010000 +000000000000 +000010000000 +000000100000 +000000000000 +000000000100 +100000000000 +000000000000 +000000000000 +000000000000 +000000000010 +25 +0000000000011000000000001 +0000000000000011000000000 +0000000000000000000000000 +0100010001001000000000000 +0000000000100100000000000 +0000000011010000001000000 +0000100000000001110100000 +0000001000000000001000001 +0100010001100001000000001 +0100000000000100001000000 +0000011100000001000011100 +0000000000000000010000000 +0000000010000100000000000 +0000000000010000000000100 +0000000000000101000001000 +0000000000001000100000000 +0000100010000000000010010 +0000000000000000100000001 +0010000000000000000010000 +0000011000000000000000000 +0000000000000010010000000 +0000000000000001000000000 +1010000000000100001000000 +0110000001000010100000000 +0001000000011000100000000 +25 +0000000000000000000000001 +0000000100001000000000000 +0001000000000000000000000 +0000001000000000000000000 +0000100000000000010000001 +0000000000000000001001000 +0001000001000000000000000 +0000000100010000000000000 +0000000000100000001000000 +0000001000000000000000000 +0000000000000000000000000 +0000000000000001000000000 +0000000000000000010000000 +0000000000000000100000000 +0000000010000000000000000 +0000000000000000000000110 +0000000000000000000000010 +0000000000000000000010000 +0000000000000000000100000 +0000000000000000000000000 +0000000000000000000100000 +0000000000100000000000000 +0000000000000000100010000 +0000000000010000000000000 +0001000000000000000000000 +12 +000011100000 +111000011001 +000010100000 +000000000010 +000001000000 +001100011001 +111100011001 +000011100000 +000011000000 +000000000110 +000000000010 +000000000000 +23 +00000000000001000000000 +00000000000000000000100 +10000000000000000010000 +00000000000000000000100 +00000000000001000000000 +00000100100010000000010 +00000100100000000000010 +10000000000000000010000 +00000001011100001001000 +00000000000000010000000 +00000000000000000000100 +00000011001000000000000 +01011000000000100100001 +00000000000000000000100 +00000000000001000000000 +00000000000000010000100 +00000000000001000000000 +00000100100000000000000 +00100000000000000000000 +00000000000001000000000 +00000100100010000000010 +00000010010000000000000 +00000000000001000000000 +12 +001111000010 +000000010001 +000001100100 +000000000100 +010000000000 +010000011000 +000000100000 +010000100000 +000000000001 +100000001000 +000000001000 +000100000000 +24 +000001010001000010000000 +000000010000010000000010 +001000000000000000001000 +000000000001010010000000 +000001110001000000010010 +000011010001010000000000 +010001000001000000000000 +000000001000000000000001 +000000110000000000000000 +000000010000000000000000 +000000001010000100000001 +000010000000000000000000 +000000000010000000000000 +000000001000000000000000 +001000000000000101000000 +000000000010000000000000 +000000001000000100000001 +001000000100000101000000 +100100000000101000100100 +000001000001000000010010 +010000010001000000000010 +000000000000000101001001 +010011000001010000000000 +000010000000010010000010 +12 +100010000000 +100000001010 +000100000100 +001000000001 +000000000010 +010000001000 +100000000000 +000000000000 +000000000001 +001000010000 +000000100000 +000000000000 +24 +010000000000000000000000 +000000000000000000010100 +000001000000000000000000 +000000111001000000000000 +010010000000000000000001 +000001000000001000000000 +000000000000000000000001 +000000000000000000000001 +000000011001000000000000 +000000000000000001001000 +000001000000000000000000 +100100000000110000100010 +001000010100000000001000 +000000000000000000000001 +000000000000000000000000 +000010000000000000000000 +100000000000000000010000 +000001000000000000000000 +000000000000001000000000 +000000001010000000001000 +000000000000000000000001 +000001000000000000000001 +000000000000000000000001 +000000000000000100000000 +23 +00000000001001000000000 +00000000000000010000100 +00010000000000000000000 +00000000000000000000000 +00000000000000000100000 +00010000000000010000000 +00001000000000101011001 +00000000001000000000000 +00000000001000000000000 +00010000000000000000000 +00000000000000000000100 +10000000000000010000000 +00000000000000010000000 +00100110000000000000010 +00000000001001000000000 +10010000000000010000000 +10000000000000000000100 +00000000000000000000100 +00000000000000000100000 +10000000000000000000000 +01000000000110000000000 +00000000000000010000000 +00001000010000100010000 +25 +0000000000000010000000000 +0000000000000000000000001 +0000000000010000000000000 +0010000000000000001000000 +0100000000000100000001000 +0000000000000000000000001 +0000000000010000000000000 +0000000000000000000010001 +0000000000010000000000000 +0000001000001000000000000 +0000000000010000000000000 +0000000000010000000000000 +0000000001000000000000000 +0000000000000001000000000 +0000000000000010000100000 +0000000000000000000000000 +0000000000010000000000000 +1000000000000000000000000 +0000000000001001000000000 +0001110110100000110000110 +0000000000010000000000000 +0100000001000000000000001 +1000000000000000000000000 +0000000000010000000000000 +0000000000010000000000000 +24 +000000000000000100000000 +100000000000000000000000 +000000000010000000001000 +000010000000000000000000 +000010000000000000000000 +000000000000000000100000 +100000000000000000000000 +010000010001101000000011 +001000010100000001000000 +000000000000001000000000 +000100000000000100100000 +000010000000000000000000 +000010000000000000000000 +100000000000000000000000 +000010000000000000000000 +011000000100100000000010 +000010000000000000000000 +000000000010000000000000 +000101000000000000000000 +000100000000000000000100 +000000101000010000000000 +000000001010000000000000 +000000000010000000011000 +000010000000000000000000 +25 +0001000000000000000001000 +0000000000001000000100000 +1000000000000000000010000 +0010000000000000010000000 +0000000001110000000100000 +0100010000000010000000000 +0010000101010000000000000 +0100001000000100000000010 +0000000000100000000001000 +0001000100100000000000001 +0000000000010100000000000 +0000000100010010000000000 +0000000000000000000000000 +0000000000000000000000000 +0000000000000000000010100 +0000010000100000010000000 +0000100010000001000001000 +0000000000000000000000000 +0001000000000000001000000 +0000100010000000000000000 +0000000000000000000000000 +0000000000010000000000100 +0000000001000000000000000 +0000000001000001001100000 +0000000010000000000000000 +23 +00000000110000100100000 +00100000000001000000010 +00101010000000001000000 +00000001100000110111000 +00000100000000000000000 +00101000000000000000001 +00000000001000000000100 +00100010000001001000000 +00000000001000000000000 +00000001000000100011000 +10000001000000110010000 +10000000010010100100000 +00000000000000001000000 +10000001000100110111000 +00000001000100010011000 +10000001000010100111000 +00000001110110000001000 +10000001100000000000000 +01000100000000000000000 +00000000000000001000001 +00000001000110010011000 +01000000000000000000100 +00001000000000001000010 +24 +000110010001000101000100 +000000110011000000101000 +000001000000000000000000 +000000000000000001100000 +010000110010010000010000 +001000000000000000000010 +000000100010100000000000 +000000000000000000000010 +000000100000001000000000 +000010000100100000010000 +100000000000000101011000 +100000000000000001001001 +000000000000000000000010 +000000001000100000001000 +000010100010010010001000 +000000000011000001000000 +000000000011010000100101 +100000000000100000010000 +000000000000000000000010 +001000000000000000000000 +100000001000010001100001 +001000000000000000000000 +000000100001000001001000 +100000001010001000000000 +1 +0 +24 +100000000010100001010000 +000000000110100000000001 +000101001000011000100110 +010001001000011000100110 +010101001000011000100110 +000100001000011000000010 +010101001000011000100010 +000101001000011000100110 +010100001000011000100110 +010101001000001000100110 +101000000001000000000000 +010101001000011000100110 +010001001000010000100010 +000000000000100000011000 +010101001000001000100100 +010101000000010000100110 +010101001000001000100110 +010101001000011000000110 +101010100100000010000000 +000000000000100101001001 +010001000000011000100110 +000000010010100000000001 +010101001000011000100110 +001000010000000010000000 +24 +000000000000100000010000 +000000000001000000000000 +110001010010000000000100 +001100000100010001000000 +000000000000100000000000 +000000000000000000001000 +000000000001000000001000 +100001111010000000000111 +000000000000100000000000 +010011110010000000000000 +000000000000011000000000 +000000000000100000000000 +000000000100000000100000 +010010011010000000000100 +000000000000100000000000 +010011011010000000000111 +001100000000000011000000 +000000000000000000001000 +000000000000000000001000 +100001111010000000000011 +000000000000000000010000 +000000000001000000000000 +000100000000000111000000 +010011101010000000000101 +25 +1000000000000000000000000 +0000000000000000000000000 +0010000000000000000000000 +0000000000000000000000000 +0000000100000000000000000 +0000000000000000000000000 +0101000000100000000001000 +0000000000000000000000000 +0000000000010000000000000 +1000000000000000000000000 +0000000000000000000000001 +0000000001001000000000000 +0000000000000001000010000 +0000000001001000000000000 +0000000000000000110000000 +0000000001001000000000000 +0000010010000000000100000 +0000000000010000000000000 +1000000000000000000000000 +0000000100000000000000000 +0000000000000000000000010 +0000000100000000000000000 +0000000000000000000000000 +0000000000000000000010000 +1000000000000000000000000 +12 +000000000000 +100000000000 +010100001000 +001000000000 +000000010000 +000000100000 +001000000000 +000001000000 +100000000000 +000000000110 +001000000000 +001000000000 +12 +111110011011 +100010110001 +100110110111 +100101110101 +111011110100 +011101010010 +111101011111 +110101110111 +100001101011 +000101110001 +001011010111 +010111000111 +24 +000000000000000010000000 +000000000100000000000000 +000000000000000000000000 +000000000100000000000000 +000000000100000000000000 +000000000010000000000000 +000000000000000001000000 +100000000000000010000000 +100000000000000000000000 +000000000000000001000000 +010010100000010000000000 +000000000000000000000000 +000000000000000000000000 +000000000000000000000000 +000000000010000000000000 +001000000000000000100000 +000000000000100000001000 +000000000000100000001001 +000000000000001000010010 +000000000000000001000000 +000000000000000000000000 +000000000100000000000000 +000000000000000000000000 +000000000000000000000000 +25 +0000000000100000000000000 +0100000000000000001000000 +0001000000100000001000000 +0000000000000000001000000 +0000000000000010000000000 +0000000000000001000000011 +0000000000100000001000000 +0000000010010000000000000 +0000000000010000000000000 +0000100000000000100000010 +0000000000000000001000000 +0000000000000010000000000 +0001000000100000001000000 +0000000001000100000000010 +0000001000000000000000000 +0000000000000000001000000 +0000000000010000000000100 +1000100000000001000000000 +0000100001000100100000011 +1000100001000001100000001 +0000000000000010000000000 +0010010100001000010111000 +0000001000000010000000000 +0000001000000010000000000 +0000000000000000001000000 +25 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0100010100001001000100110 +1000000000000000000000000 +0001000000000010000010000 +0000000000000100001000000 +0100011000001001000100110 +0010000000010000000000000 +0100011100001000000100110 +0000100000000000000000000 +0000000000100000100001000 +0010000001000000001000000 +0000011100001001000100110 +0100011100001001000100110 +0000100000000000000000000 +0100011100001001000000110 +0100001100001001000100110 +1000000010000000010001001 +0000000010000010000000000 +0100011100001001000100110 +0010000000000000000000000 +0100011100001001000100100 +0000100000000000000000000 +0010000000000000000000000 +24 +001000000000000000000000 +000100010000000100000000 +000000001000000000000000 +000000000000000000000100 +000001000000000000000000 +100000100000000000000010 +000010000000000000000000 +000011000000000000000000 +100000000000000000000010 +001000000000000000000000 +000000000000100000000000 +000000000000100000000000 +000000000001001001000000 +001000000000000000000000 +000000000100000000001000 +000000000000000010000000 +000000000000010000100000 +000000000000000010000000 +000000000000000000000100 +010000000010000000010001 +000000000000000000000100 +000000000000000010000000 +000000000000000010000000 +000000001000000000000000 +25 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0000000000100000000000000 +0001000000000001000000000 +0110111111011110111110111 +0110111111011110111110111 +1000000000000000000001000 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0000000000100000000000000 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +0110111111011110111110111 +1000000000000000000001000 +0110111111011110111110111 +25 +0010000110110000010100111 +0000000000000010000000000 +0000000000000101000010000 +0010000110110000110100111 +0010000100110000110100111 +0000000000000101000010000 +0100000000000000000000000 +0100000000000000000000000 +0100000000000000000000000 +0000011000000000001001000 +0010000010110000110100111 +1000100001001000000000000 +0000011000000000001001000 +0000000000000010000000000 +0000000000000000000000000 +1000100001001000000000000 +1001100001001000000000000 +0000011000000000001001000 +0000000000000010000000000 +0010000110110000110100111 +0000000000000010000000000 +1001100001001000000000000 +0100000000000000000000000 +0100000000000000000000000 +0100000000000000000000000 +25 +0000001000000010000100000 +0000001000000010000100000 +1001000001000100000000110 +1001000001000100010000110 +1000000001011000010000100 +0001000101001101010001100 +0001000001010000000001010 +0000000000000000000100000 +0000000001000100010000100 +0000000000000010000100000 +0000000000000010000100000 +1000000001011100010000110 +1001000000001001000001010 +0000000000000101010001100 +0000001000000010000100000 +0000000000001101000001100 +1000000000001000000000000 +0110010010100000101010001 +0000001000000000000100000 +0000110000000000000000000 +0001000100001101010001110 +0001000101001101010001100 +0000000101011100010001010 +1001000100001001000001110 +0000001000000010000000000 +23 +00000000000000000100001 +00000000000000100000000 +00000000100000000000000 +00000000000000100000000 +00001000000000000000000 +00000000100000000000000 +00000000010000000000000 +00000000000000001000000 +00001000000000000000000 +00000000000000000110000 +01000000000000000100000 +00000100000100000000000 +00000000000000000100000 +00000000000000001000000 +00000000000000000000000 +00000000000000000000000 +00101000000000000000000 +00000000000000000000000 +00000000000000000000000 +00000000000000000000000 +00000000000000000000000 +00000000010000000000000 +00010000000000000000100 +25 +0000000000000000000010000 +0000000000000000000010000 +1000000000000000000000100 +0000000000000000010000000 +0000000000100000000000000 +0100010000010100000100000 +0000000000000000010000000 +1000000000100000000000000 +0000000000100000000000000 +0000000000000000010000000 +0000000000000010010000000 +0000000000000000010000000 +0000000000000000010000000 +0001001100001000100000000 +0000000000000000010000000 +0000000000000000000000000 +0000100011000000000000000 +0000000000000000000000100 +0000000000000000010000000 +0000000000000010000000000 +0000000000000000010000000 +0000000000000010000000000 +0000000000000010000000000 +0000000000000010000000000 +0000000000000000001000010 +23 +00000000010000000000000 +10100000001100000000010 +00000100000000000000000 +00010000100000001011000 +00000000000000010000000 +00100010011001000000010 +00000000000000010000000 +00000010010101000000000 +00000000011000000100000 +00000001000010000010000 +00000100000000000000000 +00100010000100000000000 +01000000000000100000101 +00100000011100000000010 +00000000000101000100010 +00000000000000010000000 +00101000001000000100010 +00000010001101000000000 +00000100000000000000000 +00000000000000010000000 +10000000010000000000000 +00000010010100000000000 +00000000000000010000000 +23 +00000000000000000100000 +00000000000000010100000 +00000001000000000000000 +00000000000000010100000 +00000000000000000000000 +00000000000000000100000 +00000001100000000000000 +00000000000000000000010 +00000000000000000100000 +01000000010100001010000 +00000000000000000100000 +00000000000000000100000 +00000000000000010000000 +00000000000000010100000 +10000000100000000000010 +01010000000010000000000 +00000000000000000000000 +00001000000000000000000 +00100000000100100001101 +00000000000000000100000 +00000000000000000100000 +00001000000000000000000 +00000101000000000000000 +24 +000000000000000000010000 +000000000000010000000000 +000000010000000000000000 +000000010000000000000000 +100001001000000000000001 +000000000000000000000000 +000000000001000000000000 +000010000000010000000000 +000000000000000000000000 +000000000000000000000010 +010100000000101000000100 +000010000000000000000000 +000000000001000000010000 +000000000000000000010000 +000000000010000010001000 +011000000000000000100000 +000000000000000000010000 +000010100100000000000010 +000000010000000000010000 +000000000001000000000000 +000000000001000000000000 +000000000000000000010000 +000000000001000000000000 +000000000010100101000000 +25 +0101000000101000010001001 +0000100000000000000000000 +0000100000000000000000000 +0000000000000100000000000 +0000100000000000000000000 +0100000000101010000100001 +0001011000010000101010100 +1000000000000100000000000 +0000000111000011100000010 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0010000011001001000010010 +0000000111100000010001010 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0000100000000000000000000 +0001010000011000000000000 +0001011010111001100010000 diff --git a/GCJ2016/Factory/D-large-practice.out b/GCJ2016/Factory/D-large-practice.out new file mode 100644 index 0000000..b6d07de --- /dev/null +++ b/GCJ2016/Factory/D-large-practice.out @@ -0,0 +1,100 @@ +Case #1: 1 +Case #2: 1 +Case #3: 3 +Case #4: 0 +Case #5: 3 +Case #6: 10 +Case #7: 482 +Case #8: 98 +Case #9: 25 +Case #10: 107 +Case #11: 36 +Case #12: 554 +Case #13: 37 +Case #14: 369 +Case #15: 294 +Case #16: 32 +Case #17: 42 +Case #18: 237 +Case #19: 510 +Case #20: 114 +Case #21: 19 +Case #22: 555 +Case #23: 249 +Case #24: 52 +Case #25: 111 +Case #26: 0 +Case #27: 157 +Case #28: 8 +Case #29: 433 +Case #30: 217 +Case #31: 225 +Case #32: 184 +Case #33: 49 +Case #34: 312 +Case #35: 295 +Case #36: 30 +Case #37: 569 +Case #38: 61 +Case #39: 148 +Case #40: 163 +Case #41: 217 +Case #42: 34 +Case #43: 28 +Case #44: 123 +Case #45: 45 +Case #46: 30 +Case #47: 170 +Case #48: 468 +Case #49: 13 +Case #50: 46 +Case #51: 230 +Case #52: 48 +Case #53: 528 +Case #54: 101 +Case #55: 52 +Case #56: 576 +Case #57: 36 +Case #58: 580 +Case #59: 307 +Case #60: 18 +Case #61: 486 +Case #62: 297 +Case #63: 228 +Case #64: 151 +Case #65: 69 +Case #66: 82 +Case #67: 6 +Case #68: 550 +Case #69: 29 +Case #70: 111 +Case #71: 103 +Case #72: 121 +Case #73: 500 +Case #74: 23 +Case #75: 441 +Case #76: 212 +Case #77: 137 +Case #78: 163 +Case #79: 522 +Case #80: 107 +Case #81: 448 +Case #82: 1 +Case #83: 420 +Case #84: 207 +Case #85: 39 +Case #86: 22 +Case #87: 57 +Case #88: 45 +Case #89: 433 +Case #90: 124 +Case #91: 61 +Case #92: 5 +Case #93: 215 +Case #94: 499 +Case #95: 30 +Case #96: 231 +Case #97: 464 +Case #98: 188 +Case #99: 344 +Case #100: 459 diff --git a/GCJ2016/Factory/D-small-practice.in b/GCJ2016/Factory/D-small-practice.in new file mode 100644 index 0000000..304e239 --- /dev/null +++ b/GCJ2016/Factory/D-small-practice.in @@ -0,0 +1,464 @@ +100 +2 +11 +10 +2 +10 +00 +3 +000 +000 +000 +1 +1 +3 +000 +110 +000 +4 +0001 +1010 +0110 +0001 +4 +1000 +0100 +0100 +1000 +2 +00 +00 +4 +1011 +0000 +0000 +1001 +4 +0000 +0100 +1000 +0100 +4 +0001 +0010 +1100 +0001 +4 +0000 +1110 +0001 +0001 +4 +0100 +0001 +0100 +0101 +4 +1000 +0100 +0000 +0001 +4 +0100 +0100 +0100 +1000 +3 +011 +110 +000 +4 +1001 +0110 +0000 +0001 +4 +0111 +0011 +0100 +0000 +4 +1011 +0000 +1111 +0000 +4 +0100 +0001 +0111 +0000 +4 +0000 +0010 +0000 +0001 +4 +0010 +0000 +0101 +1000 +4 +0010 +0001 +0010 +1100 +4 +0000 +1000 +1001 +1000 +4 +0100 +1001 +0110 +0110 +3 +000 +111 +000 +4 +0000 +0110 +0000 +1000 +4 +1000 +0100 +0100 +0010 +4 +0000 +0001 +1100 +1001 +4 +0000 +0010 +1000 +1100 +4 +0011 +0000 +0100 +0000 +4 +0111 +1001 +0001 +0000 +3 +100 +101 +010 +4 +0001 +0100 +0110 +1011 +4 +0000 +0000 +0000 +0000 +1 +0 +3 +001 +001 +001 +3 +000 +000 +110 +4 +0010 +0001 +0001 +0010 +4 +0001 +0000 +1101 +0101 +4 +0100 +1001 +0010 +1000 +4 +1010 +0100 +0100 +1001 +4 +1001 +0000 +0010 +0010 +4 +0100 +1100 +1000 +1001 +4 +1100 +1100 +1100 +0011 +4 +1000 +0111 +0100 +0101 +4 +1000 +0011 +0100 +0000 +3 +011 +011 +011 +3 +010 +000 +010 +4 +0000 +0011 +0000 +1100 +4 +1000 +0010 +0001 +0100 +4 +1100 +0010 +1100 +1100 +4 +0000 +1110 +0000 +0000 +4 +0100 +0100 +0100 +0100 +3 +010 +111 +010 +4 +1000 +0011 +1000 +1000 +4 +0010 +0010 +0010 +0000 +4 +1001 +0010 +0110 +0100 +4 +0110 +1000 +1100 +1001 +3 +100 +100 +001 +4 +1011 +0100 +0100 +0000 +4 +0111 +0000 +1000 +0101 +4 +1110 +1110 +0001 +0001 +4 +1010 +0100 +0100 +1010 +3 +000 +110 +001 +4 +0100 +1011 +0100 +0100 +2 +01 +01 +4 +1100 +0010 +0010 +0000 +4 +0000 +0000 +0000 +1111 +2 +00 +01 +4 +1000 +1000 +0111 +1000 +4 +0000 +1000 +1000 +0000 +4 +1000 +0110 +0100 +0000 +4 +0000 +1101 +0010 +0000 +4 +0110 +0000 +0000 +0000 +4 +1100 +0011 +1000 +0000 +4 +0000 +0010 +0000 +0000 +4 +1110 +0001 +0010 +1001 +4 +1000 +1101 +0001 +0011 +4 +1001 +0000 +1100 +1100 +4 +1000 +0111 +1000 +1000 +3 +001 +100 +010 +2 +00 +11 +3 +000 +100 +000 +3 +010 +000 +001 +4 +0011 +0100 +0001 +0100 +4 +0111 +1000 +0001 +0001 +4 +1001 +1010 +0101 +0100 +3 +011 +100 +100 +4 +0101 +0001 +0001 +0000 +4 +1001 +1001 +0001 +1100 +4 +1000 +0100 +0101 +0100 +3 +110 +000 +100 +4 +0100 +0001 +0101 +0100 +2 +10 +01 +4 +1100 +0100 +0000 +0000 +4 +0001 +1000 +1000 +0001 +4 +1110 +0000 +1110 +0000 +4 +0100 +0011 +0100 +0010 +4 +0010 +0110 +0001 +1001 diff --git a/GCJ2016/Factory/D-small-practice.out b/GCJ2016/Factory/D-small-practice.out new file mode 100644 index 0000000..d9bb185 --- /dev/null +++ b/GCJ2016/Factory/D-small-practice.out @@ -0,0 +1,100 @@ +Case #1: 1 +Case #2: 1 +Case #3: 3 +Case #4: 0 +Case #5: 3 +Case #6: 10 +Case #7: 4 +Case #8: 2 +Case #9: 5 +Case #10: 3 +Case #11: 5 +Case #12: 11 +Case #13: 11 +Case #14: 1 +Case #15: 6 +Case #16: 5 +Case #17: 3 +Case #18: 4 +Case #19: 9 +Case #20: 5 +Case #21: 2 +Case #22: 2 +Case #23: 5 +Case #24: 6 +Case #25: 9 +Case #26: 6 +Case #27: 3 +Case #28: 2 +Case #29: 5 +Case #30: 2 +Case #31: 3 +Case #32: 10 +Case #33: 1 +Case #34: 9 +Case #35: 4 +Case #36: 1 +Case #37: 6 +Case #38: 3 +Case #39: 4 +Case #40: 4 +Case #41: 1 +Case #42: 10 +Case #43: 4 +Case #44: 10 +Case #45: 8 +Case #46: 3 +Case #47: 2 +Case #48: 3 +Case #49: 3 +Case #50: 4 +Case #51: 0 +Case #52: 3 +Case #53: 7 +Case #54: 12 +Case #55: 4 +Case #56: 11 +Case #57: 7 +Case #58: 10 +Case #59: 9 +Case #60: 2 +Case #61: 11 +Case #62: 4 +Case #63: 8 +Case #64: 2 +Case #65: 2 +Case #66: 10 +Case #67: 2 +Case #68: 4 +Case #69: 12 +Case #70: 1 +Case #71: 10 +Case #72: 4 +Case #73: 2 +Case #74: 6 +Case #75: 4 +Case #76: 3 +Case #77: 3 +Case #78: 9 +Case #79: 9 +Case #80: 4 +Case #81: 10 +Case #82: 0 +Case #83: 2 +Case #84: 2 +Case #85: 1 +Case #86: 3 +Case #87: 4 +Case #88: 9 +Case #89: 5 +Case #90: 6 +Case #91: 9 +Case #92: 5 +Case #93: 2 +Case #94: 11 +Case #95: 0 +Case #96: 3 +Case #97: 4 +Case #98: 4 +Case #99: 3 +Case #100: 2 diff --git a/GCJ2016/Factory/Factory.c++ b/GCJ2016/Factory/Factory.c++ index 59604f1..409a02e 100644 --- a/GCJ2016/Factory/Factory.c++ +++ b/GCJ2016/Factory/Factory.c++ @@ -1,12 +1,17 @@ #include #include #include +#include #include #include #include #include using namespace std; +typedef struct { + +} group; + vector fromR(int n, int ms, bool *m, int r) { vector ids; @@ -28,6 +33,70 @@ vector fromC(int n, int ms, bool *m, int c) { return ids; } +int compute(vector> css) { + int total = 0; + + for (pair p : css) { + total += p.first * p.first; + } + + return total; +} + +int opt(vector> pos, vector> neg) { + if (neg.size() == 0)return compute(pos); + + pair t = neg.back(); + neg.erase(neg.end()); + + //printf("selecting (%d, %d)\n", t.first, t.second); + + vector vals; + int size = pos.size(); + vector> list; + for (int i = 0; i < size; i++) { + pair tt = pos.front(); + pos.erase(pos.begin()); + //printf("selecting (%d, %d)\n", tt.first, tt.second); + + vector>::iterator it = find(list.begin(), list.end(), tt); + if (it == list.end()) { + //printf("selecting (%d, %d)\n", tt.first, tt.second); + list.push_back(tt); + + t.first += tt.first; + t.second += tt.second; + + if (t.first > t.second) { + pos.push_back(t); + + vals.push_back(opt(pos, neg)); + + pos.erase(pos.end()); + } else if (t.first < t.second) { + neg.push_back(t); + + vals.push_back(opt(pos, neg)); + + neg.erase(neg.end()); + } else { + vals.push_back(opt(pos, neg) + t.first * t.second); + } + //cout << "OPT " << vals.back() << endl; + + t.first -= tt.first; + t.second -= tt.second; + } + + pos.push_back(tt); + } + + neg.push_back(t); + sort(vals.begin(), vals.end()); + return vals.front(); +} + + int main(int argc, char **argv) { const char *fn = "sample4.in"; if (argc > 1)fn = argv[1]; @@ -50,6 +119,7 @@ int main(int argc, char **argv) { if (c == '1')m[i] = true; if (c == '1')skills++; } + //printf("total skills %d\n", skills); unordered_set pool; for (int i = 0; i < n; i++)pool.insert(i); @@ -104,13 +174,22 @@ int main(int argc, char **argv) { } css.push_back(pair(ls, ext.size())); - cout << "Comp Size" << ls << ":"; - cout << "Ext Size" << ext.size() << ":"; + //cout << "Comp Size" << ls << ":"; + //cout << "Ext Size" << ext.size() << ":"; } + skills = -skills; + vector> pos, neg; + for (pair p : css) { + //printf("comp (%d, %d)\n", p.first, p.second); + if (p.first > p.second)pos.push_back(p); + if (p.first < p.second)neg.push_back(p); + if (p.first == p.second)skills += p.first * p.second; + } + cout << "Case #" << i << ": "; - cout << -skills; + cout << opt(pos, neg) + skills; cout << endl; }