#define SIZE 9 #define DEFSTYLE STYLE_PRUNE|STYLE_FORK #define SSIZE 3 /* sqrt(SIZE) */ #define SIZEBITS 4 /* ceil(lg(SIZE)) */ #define SIZE1BITS 4 /* ceil(lg(SIZE+1)) */ static char fillchar(int fill) { return('0'+fill); } #define bitcount(x) bitcount_[(x)] static const char bitcount_[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8, 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8, 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9 }; #define bitcount_init() /* nothing */ #define FILLEDFMT " %d " #define MASKFMT "%03o" #define SEP " " #define VECTYPE unsigned int #define SUMDECL unsigned long long int sum #define SUMINIT sum = 0 static const unsigned long long int expand[] = { 0x000000000ULL, 0x000000001ULL, 0x000000010ULL, 0x000000011ULL, 0x000000100ULL, 0x000000101ULL, 0x000000110ULL, 0x000000111ULL, 0x000001000ULL, 0x000001001ULL, 0x000001010ULL, 0x000001011ULL, 0x000001100ULL, 0x000001101ULL, 0x000001110ULL, 0x000001111ULL, 0x000010000ULL, 0x000010001ULL, 0x000010010ULL, 0x000010011ULL, 0x000010100ULL, 0x000010101ULL, 0x000010110ULL, 0x000010111ULL, 0x000011000ULL, 0x000011001ULL, 0x000011010ULL, 0x000011011ULL, 0x000011100ULL, 0x000011101ULL, 0x000011110ULL, 0x000011111ULL, 0x000100000ULL, 0x000100001ULL, 0x000100010ULL, 0x000100011ULL, 0x000100100ULL, 0x000100101ULL, 0x000100110ULL, 0x000100111ULL, 0x000101000ULL, 0x000101001ULL, 0x000101010ULL, 0x000101011ULL, 0x000101100ULL, 0x000101101ULL, 0x000101110ULL, 0x000101111ULL, 0x000110000ULL, 0x000110001ULL, 0x000110010ULL, 0x000110011ULL, 0x000110100ULL, 0x000110101ULL, 0x000110110ULL, 0x000110111ULL, 0x000111000ULL, 0x000111001ULL, 0x000111010ULL, 0x000111011ULL, 0x000111100ULL, 0x000111101ULL, 0x000111110ULL, 0x000111111ULL, 0x001000000ULL, 0x001000001ULL, 0x001000010ULL, 0x001000011ULL, 0x001000100ULL, 0x001000101ULL, 0x001000110ULL, 0x001000111ULL, 0x001001000ULL, 0x001001001ULL, 0x001001010ULL, 0x001001011ULL, 0x001001100ULL, 0x001001101ULL, 0x001001110ULL, 0x001001111ULL, 0x001010000ULL, 0x001010001ULL, 0x001010010ULL, 0x001010011ULL, 0x001010100ULL, 0x001010101ULL, 0x001010110ULL, 0x001010111ULL, 0x001011000ULL, 0x001011001ULL, 0x001011010ULL, 0x001011011ULL, 0x001011100ULL, 0x001011101ULL, 0x001011110ULL, 0x001011111ULL, 0x001100000ULL, 0x001100001ULL, 0x001100010ULL, 0x001100011ULL, 0x001100100ULL, 0x001100101ULL, 0x001100110ULL, 0x001100111ULL, 0x001101000ULL, 0x001101001ULL, 0x001101010ULL, 0x001101011ULL, 0x001101100ULL, 0x001101101ULL, 0x001101110ULL, 0x001101111ULL, 0x001110000ULL, 0x001110001ULL, 0x001110010ULL, 0x001110011ULL, 0x001110100ULL, 0x001110101ULL, 0x001110110ULL, 0x001110111ULL, 0x001111000ULL, 0x001111001ULL, 0x001111010ULL, 0x001111011ULL, 0x001111100ULL, 0x001111101ULL, 0x001111110ULL, 0x001111111ULL, 0x010000000ULL, 0x010000001ULL, 0x010000010ULL, 0x010000011ULL, 0x010000100ULL, 0x010000101ULL, 0x010000110ULL, 0x010000111ULL, 0x010001000ULL, 0x010001001ULL, 0x010001010ULL, 0x010001011ULL, 0x010001100ULL, 0x010001101ULL, 0x010001110ULL, 0x010001111ULL, 0x010010000ULL, 0x010010001ULL, 0x010010010ULL, 0x010010011ULL, 0x010010100ULL, 0x010010101ULL, 0x010010110ULL, 0x010010111ULL, 0x010011000ULL, 0x010011001ULL, 0x010011010ULL, 0x010011011ULL, 0x010011100ULL, 0x010011101ULL, 0x010011110ULL, 0x010011111ULL, 0x010100000ULL, 0x010100001ULL, 0x010100010ULL, 0x010100011ULL, 0x010100100ULL, 0x010100101ULL, 0x010100110ULL, 0x010100111ULL, 0x010101000ULL, 0x010101001ULL, 0x010101010ULL, 0x010101011ULL, 0x010101100ULL, 0x010101101ULL, 0x010101110ULL, 0x010101111ULL, 0x010110000ULL, 0x010110001ULL, 0x010110010ULL, 0x010110011ULL, 0x010110100ULL, 0x010110101ULL, 0x010110110ULL, 0x010110111ULL, 0x010111000ULL, 0x010111001ULL, 0x010111010ULL, 0x010111011ULL, 0x010111100ULL, 0x010111101ULL, 0x010111110ULL, 0x010111111ULL, 0x011000000ULL, 0x011000001ULL, 0x011000010ULL, 0x011000011ULL, 0x011000100ULL, 0x011000101ULL, 0x011000110ULL, 0x011000111ULL, 0x011001000ULL, 0x011001001ULL, 0x011001010ULL, 0x011001011ULL, 0x011001100ULL, 0x011001101ULL, 0x011001110ULL, 0x011001111ULL, 0x011010000ULL, 0x011010001ULL, 0x011010010ULL, 0x011010011ULL, 0x011010100ULL, 0x011010101ULL, 0x011010110ULL, 0x011010111ULL, 0x011011000ULL, 0x011011001ULL, 0x011011010ULL, 0x011011011ULL, 0x011011100ULL, 0x011011101ULL, 0x011011110ULL, 0x011011111ULL, 0x011100000ULL, 0x011100001ULL, 0x011100010ULL, 0x011100011ULL, 0x011100100ULL, 0x011100101ULL, 0x011100110ULL, 0x011100111ULL, 0x011101000ULL, 0x011101001ULL, 0x011101010ULL, 0x011101011ULL, 0x011101100ULL, 0x011101101ULL, 0x011101110ULL, 0x011101111ULL, 0x011110000ULL, 0x011110001ULL, 0x011110010ULL, 0x011110011ULL, 0x011110100ULL, 0x011110101ULL, 0x011110110ULL, 0x011110111ULL, 0x011111000ULL, 0x011111001ULL, 0x011111010ULL, 0x011111011ULL, 0x011111100ULL, 0x011111101ULL, 0x011111110ULL, 0x011111111ULL, 0x100000000ULL, 0x100000001ULL, 0x100000010ULL, 0x100000011ULL, 0x100000100ULL, 0x100000101ULL, 0x100000110ULL, 0x100000111ULL, 0x100001000ULL, 0x100001001ULL, 0x100001010ULL, 0x100001011ULL, 0x100001100ULL, 0x100001101ULL, 0x100001110ULL, 0x100001111ULL, 0x100010000ULL, 0x100010001ULL, 0x100010010ULL, 0x100010011ULL, 0x100010100ULL, 0x100010101ULL, 0x100010110ULL, 0x100010111ULL, 0x100011000ULL, 0x100011001ULL, 0x100011010ULL, 0x100011011ULL, 0x100011100ULL, 0x100011101ULL, 0x100011110ULL, 0x100011111ULL, 0x100100000ULL, 0x100100001ULL, 0x100100010ULL, 0x100100011ULL, 0x100100100ULL, 0x100100101ULL, 0x100100110ULL, 0x100100111ULL, 0x100101000ULL, 0x100101001ULL, 0x100101010ULL, 0x100101011ULL, 0x100101100ULL, 0x100101101ULL, 0x100101110ULL, 0x100101111ULL, 0x100110000ULL, 0x100110001ULL, 0x100110010ULL, 0x100110011ULL, 0x100110100ULL, 0x100110101ULL, 0x100110110ULL, 0x100110111ULL, 0x100111000ULL, 0x100111001ULL, 0x100111010ULL, 0x100111011ULL, 0x100111100ULL, 0x100111101ULL, 0x100111110ULL, 0x100111111ULL, 0x101000000ULL, 0x101000001ULL, 0x101000010ULL, 0x101000011ULL, 0x101000100ULL, 0x101000101ULL, 0x101000110ULL, 0x101000111ULL, 0x101001000ULL, 0x101001001ULL, 0x101001010ULL, 0x101001011ULL, 0x101001100ULL, 0x101001101ULL, 0x101001110ULL, 0x101001111ULL, 0x101010000ULL, 0x101010001ULL, 0x101010010ULL, 0x101010011ULL, 0x101010100ULL, 0x101010101ULL, 0x101010110ULL, 0x101010111ULL, 0x101011000ULL, 0x101011001ULL, 0x101011010ULL, 0x101011011ULL, 0x101011100ULL, 0x101011101ULL, 0x101011110ULL, 0x101011111ULL, 0x101100000ULL, 0x101100001ULL, 0x101100010ULL, 0x101100011ULL, 0x101100100ULL, 0x101100101ULL, 0x101100110ULL, 0x101100111ULL, 0x101101000ULL, 0x101101001ULL, 0x101101010ULL, 0x101101011ULL, 0x101101100ULL, 0x101101101ULL, 0x101101110ULL, 0x101101111ULL, 0x101110000ULL, 0x101110001ULL, 0x101110010ULL, 0x101110011ULL, 0x101110100ULL, 0x101110101ULL, 0x101110110ULL, 0x101110111ULL, 0x101111000ULL, 0x101111001ULL, 0x101111010ULL, 0x101111011ULL, 0x101111100ULL, 0x101111101ULL, 0x101111110ULL, 0x101111111ULL, 0x110000000ULL, 0x110000001ULL, 0x110000010ULL, 0x110000011ULL, 0x110000100ULL, 0x110000101ULL, 0x110000110ULL, 0x110000111ULL, 0x110001000ULL, 0x110001001ULL, 0x110001010ULL, 0x110001011ULL, 0x110001100ULL, 0x110001101ULL, 0x110001110ULL, 0x110001111ULL, 0x110010000ULL, 0x110010001ULL, 0x110010010ULL, 0x110010011ULL, 0x110010100ULL, 0x110010101ULL, 0x110010110ULL, 0x110010111ULL, 0x110011000ULL, 0x110011001ULL, 0x110011010ULL, 0x110011011ULL, 0x110011100ULL, 0x110011101ULL, 0x110011110ULL, 0x110011111ULL, 0x110100000ULL, 0x110100001ULL, 0x110100010ULL, 0x110100011ULL, 0x110100100ULL, 0x110100101ULL, 0x110100110ULL, 0x110100111ULL, 0x110101000ULL, 0x110101001ULL, 0x110101010ULL, 0x110101011ULL, 0x110101100ULL, 0x110101101ULL, 0x110101110ULL, 0x110101111ULL, 0x110110000ULL, 0x110110001ULL, 0x110110010ULL, 0x110110011ULL, 0x110110100ULL, 0x110110101ULL, 0x110110110ULL, 0x110110111ULL, 0x110111000ULL, 0x110111001ULL, 0x110111010ULL, 0x110111011ULL, 0x110111100ULL, 0x110111101ULL, 0x110111110ULL, 0x110111111ULL, 0x111000000ULL, 0x111000001ULL, 0x111000010ULL, 0x111000011ULL, 0x111000100ULL, 0x111000101ULL, 0x111000110ULL, 0x111000111ULL, 0x111001000ULL, 0x111001001ULL, 0x111001010ULL, 0x111001011ULL, 0x111001100ULL, 0x111001101ULL, 0x111001110ULL, 0x111001111ULL, 0x111010000ULL, 0x111010001ULL, 0x111010010ULL, 0x111010011ULL, 0x111010100ULL, 0x111010101ULL, 0x111010110ULL, 0x111010111ULL, 0x111011000ULL, 0x111011001ULL, 0x111011010ULL, 0x111011011ULL, 0x111011100ULL, 0x111011101ULL, 0x111011110ULL, 0x111011111ULL, 0x111100000ULL, 0x111100001ULL, 0x111100010ULL, 0x111100011ULL, 0x111100100ULL, 0x111100101ULL, 0x111100110ULL, 0x111100111ULL, 0x111101000ULL, 0x111101001ULL, 0x111101010ULL, 0x111101011ULL, 0x111101100ULL, 0x111101101ULL, 0x111101110ULL, 0x111101111ULL, 0x111110000ULL, 0x111110001ULL, 0x111110010ULL, 0x111110011ULL, 0x111110100ULL, 0x111110101ULL, 0x111110110ULL, 0x111110111ULL, 0x111111000ULL, 0x111111001ULL, 0x111111010ULL, 0x111111011ULL, 0x111111100ULL, 0x111111101ULL, 0x111111110ULL, 0x111111111ULL }; #define SUMADD(vec) sum += expand[(vec)] #define SUMGET(inx) ((sum >> (4*(inx))) & 15) #include "gen.c"