const char * UsageLines [] = { "Usage: lettertopbm (width) (height)", "Places letters of text in a pbm image. Each letter is specified", "in a line of standard input of the form:", "(across) (down) (orientation) (height) (letter)", "", "(across) and (down) are integers specifying where the center", "of the letter is to be placed on the output image. If both", "are zero, for example, the letter is centered on the image.", "(orientation) must be 0, 1, 2, or 3:", "0 = upright", "1 = rotated 90 degrees clockwise", "2 = rotated 180 degrees", "3 = rotated 270 degrees clockwise", "", "(height) is the height of the family of letters - not all will", "fill the entire height.", "Anything after a #, either at the beginning of a line or after", "the letter, is considered a comment.", "Writes a PBM image to standard output.", "August 19, 2012. Latest is at gopher://sdf.org/1/users/julianbr", "", }; const int NumUsageLines = sizeof (UsageLines)/sizeof (UsageLines [0] ); #include <stdlib.h> #include <stdio.h> #include <string.h> const struct { const char * title; const int width; const unsigned long int rows [7]; } Outlines07 [] = { {"a", 3, {0, 7, 1, 7, 5, 7, 0, } }, {"b", 3, {4, 7, 5, 5, 5, 7, 0, } }, {"c", 3, {0, 7, 4, 4, 4, 7, 0, } }, {"d", 3, {1, 7, 5, 5, 5, 7, 0, } }, {"e", 3, {0, 7, 5, 7, 4, 7, 0, } }, {"f", 2, {3, 2, 2, 3, 2, 2, 0, } }, {"g", 3, {0, 7, 5, 5, 7, 1, 7, } }, {"h", 3, {4, 7, 5, 5, 5, 5, 0, } }, {"i", 1, {1, 0, 1, 1, 1, 1, 0, } }, {"j", 3, {1, 0, 1, 1, 1, 1, 7, } }, {"k", 3, {4, 5, 5, 6, 5, 5, 0, } }, {"l", 1, {1, 1, 1, 1, 1, 1, 0, } }, {"m", 5, {0, 31, 21, 21, 21, 21, 0, } }, {"n", 3, {0, 7, 5, 5, 5, 5, 0, } }, {"o", 3, {0, 7, 5, 5, 5, 7, 0, } }, {"p", 3, {0, 7, 5, 5, 5, 7, 4, } }, {"q", 3, {0, 7, 5, 5, 7, 1, 1, } }, {"r", 3, {0, 7, 4, 4, 4, 4, 0, } }, {"s", 3, {0, 7, 4, 7, 1, 7, 0, } }, {"t", 3, {4, 7, 4, 4, 4, 3, 0, } }, {"u", 3, {0, 5, 5, 5, 5, 7, 0, } }, {"v", 4, {0, 9, 9, 10, 6, 4, 0, } }, {"w", 5, {0, 17, 17, 21, 21, 10, 0, } }, {"x", 4, {0, 9, 9, 6, 9, 9, 0, } }, {"y", 4, {0, 9, 9, 5, 6, 4, 8, } }, {"z", 4, {0, 15, 1, 2, 4, 15, 0, } }, {"A", 5, {4, 10, 10, 31, 17, 17, 0, } }, {"B", 4, {14, 9, 9, 14, 9, 14, 0, } }, {"C", 4, {7, 4, 8, 8, 4, 7, 0, } }, {"D", 4, {14, 9, 9, 9, 9, 14, 0, } }, {"E", 4, {15, 8, 15, 8, 8, 15, 0, } }, {"F", 4, {15, 8, 15, 8, 8, 8, 0, } }, {"G", 5, {14, 8, 16, 19, 10, 14, 0, } }, {"H", 4, {9, 9, 15, 9, 9, 9, 0, } }, {"I", 3, {7, 2, 2, 2, 2, 7, 0, } }, {"J", 4, {3, 1, 1, 9, 9, 6, 0, } }, {"K", 5, {17, 18, 20, 28, 18, 17, 0, } }, {"L", 4, {8, 8, 8, 8, 8, 15, 0, } }, {"M", 5, {17, 27, 21, 21, 21, 17, 0, } }, {"N", 5, {17, 29, 21, 21, 23, 17, 0, } }, {"O", 6, {12, 18, 33, 33, 18, 12, 0, } }, {"P", 4, {14, 9, 9, 14, 8, 8, 0, } }, {"Q", 6, {12, 18, 33, 37, 18, 12, 3, } }, {"R", 5, {28, 18, 18, 28, 18, 17, 0, } }, {"S", 6, {30, 32, 30, 1, 1, 30, 0, } }, {"T", 5, {31, 4, 4, 4, 4, 4, 0, } }, {"U", 6, {33, 33, 33, 33, 18, 12, 0, } }, {"V", 5, {17, 17, 10, 10, 4, 4, 0, } }, {"W", 5, {17, 21, 21, 21, 27, 17, 0, } }, {"X", 5, {17, 27, 4, 4, 27, 17, 0, } }, {"Y", 5, {17, 27, 10, 14, 4, 4, 0, } }, {"Z", 5, {31, 3, 2, 4, 12, 31, 0, } }, {"1", 3, {2, 6, 2, 2, 2, 7, 0, } }, {"2", 5, {14, 17, 2, 6, 8, 31, 0, } }, {"3", 5, {14, 17, 7, 1, 18, 14, 0, } }, {"4", 4, {3, 5, 9, 15, 1, 1, 0, } }, {"5", 4, {15, 8, 14, 1, 1, 14, 0, } }, {"6", 4, {3, 6, 14, 9, 9, 6, 0, } }, {"7", 4, {15, 1, 3, 2, 6, 4, 0, } }, {"8", 4, {6, 9, 6, 9, 9, 6, 0, } }, {"9", 4, {6, 9, 9, 7, 1, 6, 0, } }, {"0", 4, {6, 9, 9, 9, 9, 6, 0, } }, {"(", 2, {1, 2, 2, 2, 2, 1, 0, } }, {")", 2, {2, 1, 1, 1, 1, 2, 0, } }, {"{", 3, {1, 2, 2, 6, 2, 1, 0, } }, {"}", 3, {4, 2, 2, 3, 2, 4, 0, } }, {"[", 2, {3, 2, 2, 2, 2, 3, 0, } }, {"]", 2, {3, 1, 1, 1, 1, 3, 0, } }, {"$", 3, {2, 7, 4, 7, 1, 7, 2, } }, {"%", 4, {8, 1, 2, 4, 8, 1, 0, } }, {"@", 5, {14, 17, 23, 21, 23, 16, 14, } }, {"*", 3, {4, 7, 4, 5, 0, 0, 0, } }, {"?", 4, {6, 9, 1, 3, 2, 0, 2, } }, {"#", 5, {5, 14, 10, 14, 20, 0, 0, } }, {"|", 1, {1, 1, 1, 1, 1, 1, 1, } }, {"=", 3, {0, 0, 7, 0, 7, 0, 0, } }, {"+", 6, {0, 8, 8, 63, 8, 8, 0, } }, {"-", 6, {0, 0, 0, 63, 0, 0, 0, } }, {"_", 6, {0, 0, 0, 0, 0, 63, 0, } }, {"~", 4, {0, 0, 5, 10, 0, 0, 0, } }, {"`", 2, {2, 1, 0, 0, 0, 0, 0, } }, {"'", 1, {1, 1, 0, 0, 0, 0, 0, } }, {"\"", 3, {5, 5, 0, 0, 0, 0, 0, } }, {",", 2, {0, 0, 0, 0, 0, 1, 2, } }, {".", 1, {0, 0, 0, 0, 0, 1, 0, } }, {";", 2, {0, 0, 1, 0, 0, 1, 2, } }, {":", 1, {0, 0, 1, 0, 0, 1, 0, } }, {"<", 3, {0, 1, 2, 4, 2, 1, 0, } }, {">", 3, {0, 4, 2, 1, 2, 4, 0, } }, {"^", 5, {4, 10, 17, 0, 0, 0, 0, } }, {"!", 1, {1, 1, 1, 1, 0, 1, 0, } }, {"\\", 5, {16, 8, 4, 4, 2, 1, 0, } }, {"/", 5, {1, 2, 4, 4, 8, 16, 0, } }, {"&", 5, {14, 10, 14, 17, 18, 13, 0, } }, {"copy", 6, {63, 33, 45, 41, 45, 33, 63, } }, {"bullet", 5, {0, 4, 14, 31, 14, 4, 0, } }, {"degree", 3, {2, 5, 2, 0, 0, 0, 0, } }, }; const int NumOutlines07 = sizeof (Outlines07)/sizeof (Outlines07 [0] ); const int Height07 = sizeof (Outlines07 [0].rows)/sizeof (Outlines07 [0].rows [0] ); int FindRows07 (const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines07) { j = i; while (j < NumOutlines07 && ((position > 0 && (strlen (Outlines07 [j].title) <= position || memcmp (Outlines07 [i].title, Outlines07 [j].title, position) != 0) ) || Outlines07 [j].title [position] != c) ) j++; if (j >= NumOutlines07) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines07 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height07); } i = j; position++; c = getchar (); } if (i < NumOutlines07) { j = i; while (j < NumOutlines07 && ((position > 0 && (strlen (Outlines07 [j].title) < position || memcmp (Outlines07 [i].title, Outlines07 [j].title, position) != 0) ) || Outlines07 [j].title [position] != '\0') ) j++; if (j >= NumOutlines07) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines07 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height07); } i = j; } if (i < NumOutlines07) { WidthPtr [0] = Outlines07 [i].width; RowsPtr [0] = Outlines07 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [12]; } Outlines12 [] = { {"a", 5, {0, 0, 0, 0, 14, 1, 15, 17, 17, 15, 0, 0, } }, {"b", 5, {0, 16, 16, 16, 30, 17, 17, 17, 17, 30, 0, 0, } }, {"c", 5, {0, 0, 0, 0, 14, 17, 16, 16, 17, 14, 0, 0, } }, {"d", 5, {0, 1, 1, 1, 15, 17, 17, 17, 17, 15, 0, 0, } }, {"e", 5, {0, 0, 0, 0, 14, 17, 31, 16, 17, 14, 0, 0, } }, {"f", 3, {0, 3, 4, 4, 7, 4, 4, 4, 4, 4, 0, 0, } }, {"g", 5, {0, 0, 0, 0, 15, 17, 17, 17, 17, 15, 1, 30, } }, {"h", 5, {0, 16, 16, 16, 22, 25, 17, 17, 17, 17, 0, 0, } }, {"i", 3, {0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, } }, {"j", 3, {0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 7, } }, {"k", 5, {0, 16, 16, 16, 18, 20, 24, 20, 18, 17, 0, 0, } }, {"l", 3, {0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, } }, {"m", 7, {0, 0, 0, 0, 118, 73, 73, 73, 73, 73, 0, 0, } }, {"n", 5, {0, 0, 0, 0, 22, 25, 17, 17, 17, 17, 0, 0, } }, {"o", 5, {0, 0, 0, 0, 14, 17, 17, 17, 17, 14, 0, 0, } }, {"p", 5, {0, 0, 0, 0, 30, 17, 17, 17, 17, 30, 16, 16, } }, {"q", 5, {0, 0, 0, 0, 15, 17, 17, 17, 17, 15, 1, 1, } }, {"r", 4, {0, 0, 0, 0, 14, 9, 8, 8, 8, 8, 0, 0, } }, {"s", 4, {0, 0, 0, 0, 6, 9, 4, 2, 9, 6, 0, 0, } }, {"t", 4, {0, 0, 4, 4, 15, 4, 4, 4, 4, 3, 0, 0, } }, {"u", 5, {0, 0, 0, 0, 17, 17, 17, 17, 19, 13, 0, 0, } }, {"v", 5, {0, 0, 0, 0, 17, 17, 10, 10, 4, 4, 0, 0, } }, {"w", 7, {0, 0, 0, 0, 73, 73, 85, 85, 34, 34, 0, 0, } }, {"x", 4, {0, 0, 0, 0, 9, 9, 6, 6, 9, 9, 0, 0, } }, {"y", 5, {0, 0, 0, 0, 9, 9, 9, 9, 6, 4, 4, 24, } }, {"z", 4, {0, 0, 0, 0, 15, 1, 2, 4, 8, 15, 0, 0, } }, {"A", 7, {0, 8, 8, 20, 20, 34, 34, 62, 65, 65, 0, 0, } }, {"B", 5, {0, 30, 17, 17, 17, 30, 17, 17, 17, 30, 0, 0, } }, {"C", 6, {0, 30, 33, 32, 32, 32, 32, 32, 33, 30, 0, 0, } }, {"D", 6, {0, 60, 34, 33, 33, 33, 33, 33, 34, 60, 0, 0, } }, {"E", 5, {0, 31, 16, 16, 16, 30, 16, 16, 16, 31, 0, 0, } }, {"F", 5, {0, 31, 16, 16, 16, 30, 16, 16, 16, 16, 0, 0, } }, {"G", 6, {0, 30, 33, 32, 32, 39, 33, 33, 35, 29, 0, 0, } }, {"H", 6, {0, 33, 33, 33, 33, 63, 33, 33, 33, 33, 0, 0, } }, {"I", 3, {0, 7, 2, 2, 2, 2, 2, 2, 2, 7, 0, 0, } }, {"J", 4, {0, 1, 1, 1, 1, 1, 1, 9, 9, 14, 0, 0, } }, {"K", 6, {0, 34, 36, 40, 48, 48, 40, 36, 34, 33, 0, 0, } }, {"L", 5, {0, 16, 16, 16, 16, 16, 16, 16, 16, 31, 0, 0, } }, {"M", 7, {0, 65, 65, 99, 99, 85, 85, 73, 73, 65, 0, 0, } }, {"N", 6, {0, 33, 49, 49, 41, 41, 37, 35, 35, 33, 0, 0, } }, {"O", 6, {0, 30, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0, } }, {"P", 6, {0, 62, 33, 33, 33, 62, 32, 32, 32, 32, 0, 0, } }, {"Q", 6, {0, 30, 33, 33, 33, 33, 33, 37, 35, 30, 1, 0, } }, {"R", 6, {0, 62, 33, 33, 33, 62, 33, 33, 33, 33, 0, 0, } }, {"S", 5, {0, 14, 17, 16, 16, 14, 1, 1, 17, 14, 0, 0, } }, {"T", 5, {0, 31, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, } }, {"U", 6, {0, 33, 33, 33, 33, 33, 33, 33, 33, 30, 0, 0, } }, {"V", 7, {0, 65, 65, 34, 34, 34, 20, 20, 8, 8, 0, 0, } }, {"W", 11, {0, 1025, 1025, 546, 546, 546, 340, 340, 136, 136, 0, 0, } }, {"X", 7, {0, 65, 65, 34, 20, 8, 20, 34, 65, 65, 0, 0, } }, {"Y", 7, {0, 65, 65, 34, 20, 8, 8, 8, 8, 8, 0, 0, } }, {"Z", 7, {0, 127, 1, 2, 4, 8, 16, 32, 64, 127, 0, 0, } }, {"1", 3, {0, 2, 6, 2, 2, 2, 2, 2, 2, 2, 0, 0, } }, {"2", 5, {0, 14, 17, 1, 1, 2, 4, 8, 16, 31, 0, 0, } }, {"3", 5, {0, 14, 17, 1, 1, 6, 1, 1, 17, 14, 0, 0, } }, {"4", 5, {0, 2, 6, 6, 10, 10, 18, 31, 2, 2, 0, 0, } }, {"5", 5, {0, 31, 16, 16, 30, 17, 1, 1, 17, 14, 0, 0, } }, {"6", 5, {0, 14, 17, 16, 16, 30, 17, 17, 17, 14, 0, 0, } }, {"7", 5, {0, 31, 1, 2, 2, 4, 4, 8, 8, 8, 0, 0, } }, {"8", 5, {0, 14, 17, 17, 17, 14, 17, 17, 17, 14, 0, 0, } }, {"9", 5, {0, 14, 17, 17, 17, 15, 1, 1, 17, 14, 0, 0, } }, {"0", 5, {0, 14, 17, 17, 17, 17, 17, 17, 17, 14, 0, 0, } }, {"(", 3, {0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, } }, {")", 3, {0, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, } }, {"{", 3, {1, 2, 2, 2, 2, 4, 2, 2, 2, 2, 1, 0, } }, {"}", 3, {4, 2, 2, 2, 2, 1, 2, 2, 2, 2, 4, 0, } }, {"[", 3, {0, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, } }, {"]", 3, {0, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, } }, {"$", 5, {0, 4, 14, 21, 20, 12, 6, 5, 21, 14, 4, 0, } }, {"%", 7, {0, 48, 73, 50, 4, 8, 16, 38, 73, 6, 0, 0, } }, {"&", 5, {0, 8, 20, 20, 8, 8, 21, 18, 18, 13, 0, 0, } }, {"@", 10, {0, 120, 390, 258, 569, 633, 633, 567, 256, 384, 124, 0, } }, {"*", 3, {0, 0, 5, 2, 5, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 5, {0, 14, 17, 1, 1, 2, 4, 4, 0, 4, 0, 0, } }, {"#", 6, {0, 18, 18, 63, 18, 18, 18, 63, 18, 18, 0, 0, } }, {"|", 3, {0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, } }, {"=", 5, {0, 0, 0, 0, 0, 31, 0, 31, 0, 0, 0, 0, } }, {"+", 5, {0, 0, 0, 0, 4, 4, 31, 4, 4, 0, 0, 0, } }, {"-", 3, {0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, } }, {"_", 6, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, } }, {"~", 6, {0, 0, 25, 38, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"`", 3, {0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 3, {0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 6, {0, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, } }, {".", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, } }, {";", 3, {0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 0, } }, {":", 3, {0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, } }, {"<", 4, {0, 0, 0, 1, 2, 4, 8, 4, 2, 1, 0, 0, } }, {">", 4, {0, 0, 0, 8, 4, 2, 1, 2, 4, 8, 0, 0, } }, {"^", 5, {4, 10, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"!", 3, {0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, } }, {"\\", 4, {0, 8, 8, 8, 4, 4, 2, 2, 1, 1, 0, 0, } }, {"/", 4, {0, 1, 1, 1, 2, 2, 4, 4, 8, 8, 0, 0, } }, {"bullet", 4, {0, 0, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, } }, {"copy", 7, {0, 0, 28, 34, 77, 81, 81, 77, 34, 28, 0, 0, } }, {"degree", 4, {6, 9, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines12 = sizeof (Outlines12)/sizeof (Outlines12 [0] ); const int Height12 = sizeof (Outlines12 [0].rows)/sizeof (Outlines12 [0].rows [0] ); int FindRows12 (const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines12) { j = i; while (j < NumOutlines12 && ((position > 0 && (strlen (Outlines12 [j].title) <= position || memcmp (Outlines12 [i].title, Outlines12 [j].title, position) != 0) ) || Outlines12 [j].title [position] != c) ) j++; if (j >= NumOutlines12) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines12 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height12); } i = j; position++; c = getchar (); } if (i < NumOutlines12) { j = i; while (j < NumOutlines12 && ((position > 0 && (strlen (Outlines12 [j].title) < position || memcmp (Outlines12 [i].title, Outlines12 [j].title, position) != 0) ) || Outlines12 [j].title [position] != '\0') ) j++; if (j >= NumOutlines12) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines12 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height12); } i = j; } if (i < NumOutlines12) { WidthPtr [0] = Outlines12 [i].width; RowsPtr [0] = Outlines12 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [18]; } Outlines18 [] = { {"a", 9, {0, 0, 0, 0, 124, 130, 2, 2, 126, 130, 258, 262, 249, 0, 0, 0, 0, 0, } }, {"b", 10, {768, 256, 256, 256, 316, 322, 385, 257, 257, 257, 385, 322, 828, 0, 0, 0, 0, 0, } }, {"c", 9, {0, 0, 0, 0, 125, 131, 257, 256, 256, 256, 257, 130, 124, 0, 0, 0, 0, 0, } }, {"d", 10, {6, 2, 2, 2, 242, 270, 514, 514, 514, 514, 514, 270, 243, 0, 0, 0, 0, 0, } }, {"e", 8, {0, 0, 0, 0, 60, 66, 129, 129, 255, 128, 128, 65, 62, 0, 0, 0, 0, 0, } }, {"f", 9, {63, 64, 64, 64, 508, 64, 64, 64, 64, 64, 64, 64, 508, 0, 0, 0, 0, 0, } }, {"g", 8, {0, 0, 0, 0, 59, 70, 130, 130, 130, 130, 130, 70, 58, 2, 2, 4, 120, 0, } }, {"h", 9, {384, 128, 128, 128, 184, 196, 130, 130, 130, 130, 130, 130, 455, 0, 0, 0, 0, 0, } }, {"i", 9, {16, 16, 0, 0, 240, 16, 16, 16, 16, 16, 16, 16, 511, 0, 0, 0, 0, 0, } }, {"j", 6, {2, 2, 0, 0, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 0, } }, {"k", 9, {384, 128, 128, 128, 143, 132, 152, 160, 224, 144, 136, 132, 399, 0, 0, 0, 0, 0, } }, {"l", 9, {240, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 511, 0, 0, 0, 0, 0, } }, {"m", 11, {0, 0, 0, 0, 1740, 818, 546, 546, 546, 546, 546, 546, 1843, 0, 0, 0, 0, 0, } }, {"n", 9, {0, 0, 0, 0, 440, 196, 130, 130, 130, 130, 130, 130, 455, 0, 0, 0, 0, 0, } }, {"o", 9, {0, 0, 0, 0, 124, 130, 257, 257, 257, 257, 257, 130, 124, 0, 0, 0, 0, 0, } }, {"p", 10, {0, 0, 0, 0, 828, 322, 385, 257, 257, 257, 385, 322, 316, 256, 256, 256, 896, 0, } }, {"q", 10, {0, 0, 0, 0, 243, 266, 518, 514, 514, 514, 514, 270, 242, 2, 2, 2, 7, 0, } }, {"r", 8, {0, 0, 0, 0, 206, 81, 96, 64, 64, 64, 64, 64, 252, 0, 0, 0, 0, 0, } }, {"s", 8, {0, 0, 0, 0, 125, 131, 129, 124, 2, 1, 129, 194, 188, 0, 0, 0, 0, 0, } }, {"t", 9, {0, 64, 64, 64, 510, 64, 64, 64, 64, 64, 64, 67, 60, 0, 0, 0, 0, 0, } }, {"u", 10, {0, 0, 0, 0, 774, 258, 258, 258, 258, 258, 258, 262, 251, 0, 0, 0, 0, 0, } }, {"v", 12, {0, 0, 0, 0, 3855, 516, 264, 264, 264, 144, 144, 96, 96, 0, 0, 0, 0, 0, } }, {"w", 12, {0, 0, 0, 0, 3599, 1028, 1092, 1092, 584, 680, 680, 680, 272, 0, 0, 0, 0, 0, } }, {"x", 10, {0, 0, 0, 0, 975, 258, 132, 72, 48, 72, 132, 258, 975, 0, 0, 0, 0, 0, } }, {"y", 12, {0, 0, 0, 0, 3855, 516, 520, 264, 264, 144, 144, 96, 96, 64, 64, 128, 1984, 0, } }, {"z", 8, {0, 0, 0, 0, 255, 130, 4, 8, 16, 32, 64, 129, 255, 0, 0, 0, 0, 0, } }, {"A", 12, {0, 992, 96, 144, 144, 144, 264, 264, 1020, 516, 516, 1026, 3855, 0, 0, 0, 0, 0, } }, {"B", 10, {0, 1020, 130, 130, 130, 132, 252, 130, 129, 129, 129, 130, 1020, 0, 0, 0, 0, 0, } }, {"C", 10, {0, 121, 135, 257, 512, 512, 512, 512, 512, 512, 257, 130, 124, 0, 0, 0, 0, 0, } }, {"D", 9, {0, 508, 130, 130, 129, 129, 129, 129, 129, 129, 130, 130, 508, 0, 0, 0, 0, 0, } }, {"E", 10, {0, 1023, 129, 129, 136, 136, 248, 136, 136, 129, 129, 129, 1023, 0, 0, 0, 0, 0, } }, {"F", 10, {0, 1023, 129, 129, 136, 136, 248, 136, 136, 128, 128, 128, 1008, 0, 0, 0, 0, 0, } }, {"G", 10, {0, 122, 134, 258, 512, 512, 512, 543, 514, 514, 258, 130, 124, 0, 0, 0, 0, 0, } }, {"H", 12, {0, 3999, 516, 516, 516, 516, 1020, 516, 516, 516, 516, 516, 3999, 0, 0, 0, 0, 0, } }, {"I", 7, {0, 127, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 127, 0, 0, 0, 0, 0, } }, {"J", 9, {0, 127, 4, 4, 4, 4, 4, 260, 260, 260, 260, 136, 112, 0, 0, 0, 0, 0, } }, {"K", 11, {0, 1951, 260, 264, 272, 288, 320, 480, 272, 264, 264, 260, 1927, 0, 0, 0, 0, 0, } }, {"L", 9, {0, 496, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 511, 0, 0, 0, 0, 0, } }, {"M", 11, {0, 1799, 774, 650, 650, 650, 594, 594, 546, 514, 514, 514, 1799, 0, 0, 0, 0, 0, } }, {"N", 11, {0, 1927, 386, 322, 322, 290, 290, 274, 274, 266, 266, 262, 902, 0, 0, 0, 0, 0, } }, {"O", 10, {0, 120, 132, 258, 513, 513, 513, 513, 513, 513, 258, 132, 120, 0, 0, 0, 0, 0, } }, {"P", 9, {0, 508, 66, 65, 65, 65, 66, 124, 64, 64, 64, 64, 504, 0, 0, 0, 0, 0, } }, {"Q", 10, {0, 120, 132, 258, 513, 513, 513, 513, 513, 513, 258, 132, 120, 32, 121, 198, 0, 0, } }, {"R", 11, {0, 2032, 264, 260, 260, 260, 264, 496, 264, 260, 260, 258, 1923, 0, 0, 0, 0, 0, } }, {"S", 8, {0, 61, 67, 129, 128, 192, 60, 2, 1, 1, 129, 194, 188, 0, 0, 0, 0, 0, } }, {"T", 9, {0, 511, 273, 273, 273, 16, 16, 16, 16, 16, 16, 16, 124, 0, 0, 0, 0, 0, } }, {"U", 10, {0, 903, 258, 258, 258, 258, 258, 258, 258, 258, 258, 132, 120, 0, 0, 0, 0, 0, } }, {"V", 12, {0, 3855, 516, 516, 264, 264, 264, 144, 144, 144, 96, 96, 96, 0, 0, 0, 0, 0, } }, {"W", 12, {0, 3871, 1028, 1028, 1092, 1092, 584, 680, 680, 680, 680, 680, 272, 0, 0, 0, 0, 0, } }, {"X", 11, {0, 1935, 260, 136, 136, 80, 32, 80, 136, 132, 260, 514, 1935, 0, 0, 0, 0, 0, } }, {"Y", 11, {0, 1935, 514, 260, 136, 80, 80, 32, 32, 32, 32, 32, 240, 0, 0, 0, 0, 0, } }, {"Z", 8, {0, 255, 129, 130, 132, 4, 8, 16, 32, 33, 65, 129, 255, 0, 0, 0, 0, 0, } }, {"(", 3, {1, 1, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 1, 1, 0, 0, } }, {")", 3, {4, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 0, 0, } }, {"{", 5, {0, 3, 4, 4, 4, 4, 4, 4, 24, 4, 4, 4, 4, 4, 4, 3, 0, 0, } }, {"}", 5, {0, 24, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 24, 0, 0, } }, {"[", 4, {15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, 0, 0, } }, {"]", 4, {15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 0, 0, } }, {"$", 7, {8, 31, 33, 64, 64, 64, 60, 3, 1, 65, 67, 126, 8, 8, 8, 0, 0, 0, } }, {"%", 7, {56, 68, 68, 68, 56, 3, 28, 96, 14, 17, 17, 17, 14, 0, 0, 0, 0, 0, } }, {"&", 8, {0, 0, 60, 64, 64, 64, 32, 81, 148, 140, 132, 204, 115, 0, 0, 0, 0, 0, } }, {"@", 8, {60, 98, 129, 129, 135, 137, 145, 145, 145, 143, 128, 128, 130, 60, 0, 0, 0, 0, } }, {"*", 7, {8, 8, 8, 127, 8, 12, 20, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 7, {0, 60, 66, 65, 1, 1, 6, 8, 8, 0, 0, 28, 28, 0, 0, 0, 0, 0, } }, {"#", 8, {18, 18, 18, 36, 36, 255, 36, 36, 255, 36, 36, 72, 72, 72, 0, 0, 0, 0, } }, {"|", 1, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, } }, {"=", 10, {0, 0, 0, 0, 0, 1023, 0, 0, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 9, {0, 0, 8, 8, 8, 8, 8, 511, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, } }, {"-", 8, {0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4095, } }, {"~", 8, {0, 0, 0, 0, 0, 0, 96, 153, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"`", 3, {4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 3, {7, 7, 7, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 8, {231, 231, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 4, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 6, 12, 12, 8, 0, 0, } }, {".", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, } }, {";", 4, {0, 0, 0, 0, 7, 7, 7, 0, 0, 7, 6, 12, 12, 8, 0, 0, 0, 0, } }, {":", 3, {0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, } }, {"<", 9, {0, 0, 1, 2, 12, 48, 64, 384, 64, 48, 12, 2, 1, 0, 0, 0, 0, 0, } }, {">", 9, {0, 0, 256, 128, 96, 24, 4, 3, 4, 24, 96, 128, 256, 0, 0, 0, 0, 0, } }, {"^", 8, {0, 24, 36, 36, 66, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"!", 3, {2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, } }, {"\\", 8, {128, 64, 64, 64, 32, 32, 16, 16, 8, 8, 4, 4, 2, 2, 1, 0, 0, 0, } }, {"/", 8, {1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 0, 0, 0, } }, {"0", 8, {60, 66, 66, 129, 129, 129, 129, 129, 129, 129, 130, 66, 60, 0, 0, 0, 0, 0, } }, {"1", 8, {24, 232, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 127, 0, 0, 0, 0, 0, } }, {"2", 8, {60, 66, 129, 1, 1, 2, 4, 8, 16, 32, 64, 129, 255, 0, 0, 0, 0, 0, } }, {"3", 8, {60, 194, 1, 1, 2, 28, 2, 1, 1, 1, 1, 130, 124, 0, 0, 0, 0, 0, } }, {"4", 7, {2, 6, 6, 10, 18, 18, 34, 34, 66, 127, 2, 2, 15, 0, 0, 0, 0, 0, } }, {"5", 8, {126, 64, 64, 64, 64, 92, 98, 1, 1, 1, 129, 66, 60, 0, 0, 0, 0, 0, } }, {"6", 9, {15, 48, 64, 128, 256, 316, 322, 385, 257, 257, 129, 66, 60, 0, 0, 0, 0, 0, } }, {"7", 8, {255, 129, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 8, 0, 0, 0, 0, 0, } }, {"8", 7, {28, 34, 65, 65, 65, 34, 30, 34, 65, 65, 65, 34, 28, 0, 0, 0, 0, 0, } }, {"9", 8, {56, 70, 130, 129, 129, 129, 67, 61, 1, 2, 2, 4, 248, 0, 0, 0, 0, 0, } }, }; const int NumOutlines18 = sizeof (Outlines18)/sizeof (Outlines18 [0] ); const int Height18 = sizeof (Outlines18 [0].rows)/sizeof (Outlines18 [0].rows [0] ); int FindRows18 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines18) { j = i; while (j < NumOutlines18 && ((position > 0 && (strlen (Outlines18 [j].title) <= position || memcmp (Outlines18 [i].title, Outlines18 [j].title, position) != 0) ) || Outlines18 [j].title [position] != c) ) j++; if (j >= NumOutlines18) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines18 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height18); } i = j; position++; c = getchar (); } if (i < NumOutlines18) { j = i; while (j < NumOutlines18 && ((position > 0 && (strlen (Outlines18 [j].title) < position || memcmp (Outlines18 [i].title, Outlines18 [j].title, position) != 0) ) || Outlines18 [j].title [position] != '\0') ) j++; if (j >= NumOutlines18) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines18 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height18); } i = j; } if (i < NumOutlines18) { WidthPtr [0] = Outlines18 [i].width; RowsPtr [0] = Outlines18 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [22]; } Outlines22 [] = { {"!", 3, {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 5, {27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"#", 6, {0, 0, 0, 0, 18, 18, 18, 63, 63, 18, 18, 63, 63, 18, 18, 0, 0, 0, 0, 0, 0, 0, } }, {"$", 6, {12, 12, 12, 30, 63, 62, 60, 60, 30, 15, 15, 15, 63, 63, 30, 12, 12, 12, 0, 0, 0, 0, } }, {"%", 7, {49, 123, 123, 127, 118, 14, 12, 28, 24, 24, 54, 63, 111, 111, 102, 0, 0, 0, 0, 0, 0, 0, } }, {"&", 7, {24, 28, 60, 60, 28, 60, 56, 120, 124, 108, 111, 103, 103, 62, 30, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 3, {3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"(", 3, {0, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {")", 4, {0, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, } }, {"*", 5, {17, 27, 31, 31, 31, 14, 27, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 5, {0, 0, 0, 0, 4, 4, 4, 31, 31, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 2, 0, 0, 0, } }, {"-", 5, {0, 0, 0, 0, 0, 0, 0, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {".", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"/", 5, {1, 3, 3, 3, 7, 6, 6, 6, 12, 12, 12, 24, 24, 24, 16, 0, 0, 0, 0, 0, 0, 0, } }, {"0", 8, {24, 60, 102, 102, 195, 195, 195, 219, 195, 195, 195, 102, 102, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"1", 5, {6, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 15, 0, 0, 0, 0, 0, 0, 0, } }, {"2", 8, {60, 126, 231, 195, 3, 3, 3, 3, 6, 6, 14, 12, 24, 255, 255, 0, 0, 0, 0, 0, 0, 0, } }, {"3", 8, {60, 126, 231, 195, 3, 3, 6, 30, 30, 3, 3, 195, 195, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"4", 8, {12, 28, 60, 108, 204, 204, 255, 255, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, } }, {"5", 8, {255, 255, 192, 192, 192, 240, 124, 14, 7, 3, 3, 3, 6, 124, 248, 0, 0, 0, 0, 0, 0, 0, } }, {"6", 8, {7, 31, 56, 112, 96, 192, 192, 252, 254, 195, 195, 195, 195, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"7", 8, {255, 255, 3, 6, 6, 12, 28, 24, 56, 48, 112, 96, 224, 192, 192, 0, 0, 0, 0, 0, 0, 0, } }, {"8", 8, {60, 126, 231, 195, 195, 195, 102, 126, 126, 195, 195, 195, 195, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"9", 8, {60, 126, 231, 195, 195, 195, 231, 127, 27, 3, 7, 6, 28, 248, 240, 0, 0, 0, 0, 0, 0, 0, } }, {":", 3, {0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {";", 3, {0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 2, 0, 0, 0, } }, {"<", 5, {3, 3, 7, 6, 12, 28, 24, 16, 24, 24, 12, 14, 6, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"=", 5, {0, 0, 0, 0, 0, 0, 31, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {">", 5, {0, 0, 24, 28, 12, 6, 3, 3, 3, 7, 14, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 6, {12, 30, 51, 51, 3, 3, 7, 6, 4, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, } }, {"@", 7, {0, 0, 0, 0, 0, 0, 0, 62, 65, 79, 73, 73, 79, 96, 63, 0, 0, 0, 0, 0, 0, 0, } }, {"A", 8, {24, 60, 60, 60, 126, 102, 102, 231, 255, 255, 195, 195, 195, 195, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"B", 8, {248, 254, 198, 195, 195, 195, 206, 252, 254, 199, 195, 195, 199, 254, 252, 0, 0, 0, 0, 0, 0, 0, } }, {"C", 7, {14, 31, 51, 115, 96, 96, 96, 96, 96, 96, 96, 115, 115, 63, 30, 0, 0, 0, 0, 0, 0, 0, } }, {"D", 8, {240, 248, 220, 206, 198, 195, 195, 195, 195, 195, 199, 198, 206, 252, 240, 0, 0, 0, 0, 0, 0, 0, } }, {"E", 8, {255, 255, 192, 192, 192, 192, 252, 252, 192, 192, 192, 192, 192, 255, 255, 0, 0, 0, 0, 0, 0, 0, } }, {"F", 8, {255, 255, 192, 192, 192, 192, 252, 252, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, 0, 0, } }, {"G", 8, {24, 62, 103, 227, 192, 192, 192, 192, 206, 207, 195, 195, 231, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"H", 8, {195, 195, 195, 195, 195, 195, 255, 255, 195, 195, 195, 195, 195, 195, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"I", 4, {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"J", 6, {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 51, 51, 63, 31, 0, 0, 0, 0, 0, 0, 0, } }, {"K", 8, {195, 199, 206, 220, 248, 240, 224, 192, 224, 240, 248, 220, 206, 199, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"L", 8, {192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 255, 255, 0, 0, 0, 0, 0, 0, 0, } }, {"M", 10, {771, 771, 771, 903, 903, 975, 975, 1023, 891, 891, 819, 771, 771, 771, 771, 0, 0, 0, 0, 0, 0, 0, } }, {"N", 8, {195, 195, 195, 227, 227, 243, 251, 219, 223, 207, 207, 199, 199, 195, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"O", 8, {24, 60, 102, 102, 195, 195, 195, 195, 195, 195, 195, 102, 102, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"P", 8, {248, 254, 199, 195, 195, 206, 252, 240, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, 0, 0, } }, {"Q", 8, {60, 126, 230, 195, 195, 195, 195, 195, 195, 195, 195, 195, 103, 126, 62, 6, 6, 6, 0, 0, 0, 0, } }, {"R", 8, {248, 254, 199, 195, 195, 206, 252, 240, 240, 216, 220, 206, 198, 199, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"S", 8, {60, 126, 231, 195, 192, 192, 96, 124, 30, 3, 3, 195, 227, 126, 60, 0, 0, 0, 0, 0, 0, 0, } }, {"T", 8, {255, 255, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, } }, {"U", 8, {195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 255, 126, 0, 0, 0, 0, 0, 0, 0, } }, {"V", 8, {195, 195, 195, 195, 195, 195, 102, 102, 102, 126, 60, 60, 60, 60, 24, 0, 0, 0, 0, 0, 0, 0, } }, {"W", 10, {771, 771, 771, 771, 771, 771, 771, 819, 819, 891, 891, 1023, 462, 462, 390, 0, 0, 0, 0, 0, 0, 0, } }, {"X", 8, {195, 195, 195, 102, 102, 60, 60, 24, 60, 60, 102, 102, 195, 195, 195, 0, 0, 0, 0, 0, 0, 0, } }, {"Y", 8, {195, 195, 231, 102, 126, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, } }, {"Z", 8, {255, 255, 3, 6, 6, 12, 28, 24, 56, 48, 112, 96, 224, 255, 255, 0, 0, 0, 0, 0, 0, 0, } }, {"[", 4, {7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, } }, {"\\", 5, {16, 24, 24, 24, 28, 12, 12, 12, 6, 6, 6, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, } }, {"]", 4, {7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, } }, {"^", 5, {14, 14, 31, 27, 27, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, } }, {"`", 4, {2, 2, 3, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"a", 6, {0, 0, 0, 0, 0, 0, 0, 15, 15, 3, 31, 63, 51, 63, 31, 0, 0, 0, 0, 0, 0, 0, } }, {"b", 6, {48, 48, 48, 48, 48, 48, 48, 62, 63, 51, 51, 51, 51, 63, 62, 0, 0, 0, 0, 0, 0, 0, } }, {"c", 6, {0, 0, 0, 0, 0, 0, 0, 30, 63, 51, 48, 48, 51, 63, 30, 0, 0, 0, 0, 0, 0, 0, } }, {"d", 6, {3, 3, 3, 3, 3, 3, 3, 31, 63, 51, 51, 51, 51, 63, 31, 0, 0, 0, 0, 0, 0, 0, } }, {"e", 6, {0, 0, 0, 0, 0, 0, 0, 30, 63, 51, 63, 63, 48, 62, 30, 0, 0, 0, 0, 0, 0, 0, } }, {"f", 6, {30, 63, 51, 48, 48, 48, 48, 62, 62, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, } }, {"g", 6, {0, 0, 0, 0, 0, 0, 0, 31, 63, 51, 51, 51, 51, 63, 31, 3, 3, 3, 3, 51, 63, 30, } }, {"h", 6, {48, 48, 48, 48, 48, 48, 48, 62, 63, 51, 51, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, } }, {"i", 3, {0, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"j", 6, {0, 0, 6, 15, 6, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 38, 62, 28, } }, {"k", 6, {48, 48, 48, 48, 48, 48, 48, 51, 55, 62, 56, 56, 62, 55, 51, 0, 0, 0, 0, 0, 0, 0, } }, {"l", 3, {7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"m", 8, {0, 0, 0, 0, 0, 0, 0, 255, 255, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, } }, {"n", 6, {0, 0, 0, 0, 0, 0, 0, 62, 63, 51, 51, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, } }, {"o", 6, {0, 0, 0, 0, 0, 0, 0, 30, 63, 51, 51, 51, 51, 63, 30, 0, 0, 0, 0, 0, 0, 0, } }, {"p", 6, {0, 0, 0, 0, 0, 0, 0, 62, 63, 51, 51, 51, 51, 63, 62, 48, 48, 48, 48, 48, 48, 48, } }, {"q", 6, {0, 0, 0, 0, 0, 0, 0, 31, 63, 51, 51, 51, 51, 63, 31, 3, 3, 3, 3, 3, 3, 3, } }, {"r", 6, {0, 0, 0, 0, 0, 0, 0, 62, 63, 51, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, } }, {"s", 6, {0, 0, 0, 0, 0, 0, 0, 31, 63, 48, 62, 31, 3, 63, 62, 0, 0, 0, 0, 0, 0, 0, } }, {"t", 6, {0, 0, 0, 0, 24, 24, 24, 62, 62, 24, 24, 24, 24, 30, 15, 0, 0, 0, 0, 0, 0, 0, } }, {"u", 6, {0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 63, 31, 0, 0, 0, 0, 0, 0, 0, } }, {"v", 6, {0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 30, 30, 30, 12, 0, 0, 0, 0, 0, 0, 0, } }, {"w", 8, {0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 255, 255, 231, 102, 102, 0, 0, 0, 0, 0, 0, 0, } }, {"x", 6, {0, 0, 0, 0, 0, 0, 0, 51, 51, 31, 12, 12, 30, 51, 51, 0, 0, 0, 0, 0, 0, 0, } }, {"y", 6, {0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 27, 27, 15, 14, 6, 6, 6, 12, 12, 12, 56, 48, } }, {"z", 6, {0, 0, 0, 0, 0, 0, 0, 63, 63, 6, 14, 28, 24, 63, 63, 0, 0, 0, 0, 0, 0, 0, } }, {"{", 4, {3, 3, 7, 6, 6, 4, 4, 4, 4, 4, 6, 6, 6, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"|", 3, {3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, } }, {"}", 4, {6, 6, 7, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, } }, {"~", 6, {0, 0, 0, 0, 24, 60, 60, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines22 = sizeof (Outlines22)/sizeof (Outlines22 [0] ); const int Height22 = sizeof (Outlines22 [0].rows)/sizeof (Outlines22 [0].rows [0] ); int FindRows22 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines22) { j = i; while (j < NumOutlines22 && ((position > 0 && (strlen (Outlines22 [j].title) <= position || memcmp (Outlines22 [i].title, Outlines22 [j].title, position) != 0) ) || Outlines22 [j].title [position] != c) ) j++; if (j >= NumOutlines22) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines22 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height22); } i = j; position++; c = getchar (); } if (i < NumOutlines22) { j = i; while (j < NumOutlines22 && ((position > 0 && (strlen (Outlines22 [j].title) < position || memcmp (Outlines22 [i].title, Outlines22 [j].title, position) != 0) ) || Outlines22 [j].title [position] != '\0') ) j++; if (j >= NumOutlines22) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines22 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height22); } i = j; } if (i < NumOutlines22) { WidthPtr [0] = Outlines22 [i].width; RowsPtr [0] = Outlines22 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [28]; } Outlines28 [] = { {"!", 4, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 5, {27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"#", 7, {0, 0, 0, 0, 0, 0, 50, 50, 50, 127, 127, 127, 54, 127, 127, 127, 38, 38, 38, 36, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"$", 7, {28, 28, 28, 28, 62, 127, 127, 124, 124, 124, 60, 62, 31, 31, 31, 63, 127, 62, 62, 28, 28, 28, 0, 0, 0, 0, 0, 0, } }, {"%", 8, {99, 243, 243, 247, 246, 254, 110, 12, 28, 24, 56, 56, 48, 126, 111, 239, 239, 207, 206, 132, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"&", 8, {24, 56, 60, 60, 44, 60, 60, 120, 120, 248, 248, 220, 220, 207, 239, 239, 102, 126, 62, 26, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 4, {7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"(", 5, {3, 7, 14, 12, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 12, 14, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, } }, {")", 5, {24, 28, 14, 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 6, 14, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"*", 6, {51, 51, 63, 30, 63, 63, 63, 30, 63, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 6, {0, 0, 0, 0, 0, 0, 12, 12, 12, 63, 63, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 3, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, } }, {"-", 6, {0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {".", 4, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"/", 6, {1, 3, 3, 3, 7, 7, 6, 14, 14, 12, 12, 28, 24, 24, 56, 56, 48, 48, 48, 32, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"0", 10, {120, 252, 204, 462, 903, 771, 771, 771, 819, 819, 819, 771, 771, 771, 771, 903, 462, 204, 252, 120, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"1", 6, {6, 14, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"2", 10, {120, 508, 910, 775, 771, 3, 3, 3, 3, 3, 3, 3, 7, 14, 28, 56, 112, 224, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"3", 10, {120, 252, 462, 903, 903, 3, 7, 7, 14, 60, 62, 14, 7, 3, 771, 903, 390, 510, 252, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"4", 10, {12, 28, 28, 60, 124, 236, 236, 460, 1023, 1023, 1023, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"5", 10, {1023, 1023, 768, 768, 768, 768, 768, 1016, 1020, 14, 7, 3, 3, 3, 3, 7, 14, 796, 1016, 1008, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"6", 10, {7, 31, 126, 240, 448, 448, 896, 896, 816, 1020, 1022, 902, 903, 771, 771, 903, 390, 510, 252, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"7", 10, {1023, 1023, 7, 7, 14, 14, 28, 28, 56, 56, 112, 96, 224, 192, 448, 384, 896, 768, 768, 512, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"8", 10, {120, 252, 462, 903, 903, 771, 903, 903, 462, 252, 510, 462, 903, 771, 771, 903, 390, 510, 252, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"9", 10, {120, 252, 462, 903, 903, 771, 903, 903, 463, 511, 123, 3, 7, 6, 14, 28, 124, 1008, 992, 512, 0, 0, 0, 0, 0, 0, 0, 0, } }, {":", 4, {0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, } }, {";", 4, {0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, } }, {"<", 6, {3, 3, 7, 14, 14, 28, 24, 56, 48, 48, 48, 48, 56, 28, 28, 14, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"=", 6, {0, 0, 0, 0, 0, 0, 0, 63, 63, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {">", 6, {0, 0, 0, 48, 56, 28, 14, 15, 7, 3, 3, 7, 14, 28, 60, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 7, {28, 62, 54, 119, 99, 99, 3, 7, 6, 14, 12, 28, 28, 28, 0, 0, 28, 28, 28, 8, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"@", 8, {0, 0, 0, 0, 0, 0, 0, 0, 16, 120, 124, 248, 220, 252, 252, 220, 248, 126, 127, 19, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"A", 10, {48, 120, 120, 120, 252, 204, 204, 462, 462, 390, 1023, 1023, 771, 771, 771, 771, 771, 771, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"B", 10, {1008, 1020, 830, 783, 775, 771, 775, 783, 830, 1020, 1020, 798, 775, 771, 771, 775, 782, 1020, 1016, 960, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"C", 10, {120, 252, 462, 903, 771, 771, 768, 768, 768, 768, 768, 768, 768, 768, 771, 771, 903, 462, 252, 120, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"D", 10, {960, 1008, 1016, 796, 782, 782, 775, 775, 771, 771, 771, 775, 775, 774, 782, 796, 828, 1016, 992, 896, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"E", 10, {1023, 1023, 768, 768, 768, 768, 768, 768, 1020, 1020, 768, 768, 768, 768, 768, 768, 768, 768, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"F", 10, {1023, 1023, 768, 768, 768, 768, 768, 768, 1020, 1020, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"G", 10, {120, 252, 252, 462, 390, 388, 896, 896, 768, 768, 768, 783, 911, 911, 391, 391, 463, 252, 120, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"H", 10, {771, 771, 771, 771, 771, 771, 771, 771, 1023, 1023, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"I", 6, {15, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"J", 9, {15, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 390, 390, 462, 252, 120, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"K", 10, {771, 771, 775, 782, 796, 824, 880, 992, 960, 896, 896, 960, 992, 880, 824, 796, 782, 775, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"L", 10, {768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"M", 12, {3075, 3075, 3075, 3591, 3591, 3855, 3855, 3999, 3999, 3483, 3579, 3315, 3315, 3171, 3075, 3075, 3075, 3075, 3075, 3075, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"N", 10, {771, 771, 899, 899, 963, 963, 995, 995, 883, 883, 827, 795, 799, 783, 783, 775, 775, 771, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"O", 10, {120, 252, 252, 462, 390, 390, 903, 903, 771, 771, 771, 771, 903, 903, 390, 390, 462, 252, 120, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"P", 10, {1008, 1020, 830, 775, 771, 775, 783, 1022, 1020, 992, 768, 768, 768, 768, 768, 768, 768, 768, 768, 768, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Q", 10, {120, 252, 462, 903, 775, 771, 771, 771, 771, 771, 771, 771, 771, 771, 775, 782, 924, 508, 508, 236, 14, 14, 6, 6, 6, 0, 0, 0, } }, {"R", 10, {1008, 1020, 830, 775, 771, 775, 783, 1022, 1020, 992, 864, 880, 824, 824, 796, 782, 782, 775, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"S", 10, {124, 254, 455, 899, 771, 768, 768, 896, 448, 252, 126, 15, 7, 3, 3, 771, 775, 910, 508, 248, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"T", 10, {1023, 1023, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"U", 10, {771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 903, 510, 252, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"V", 10, {771, 771, 771, 771, 771, 903, 903, 390, 390, 462, 462, 204, 204, 204, 204, 252, 120, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"W", 12, {3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3171, 3171, 3171, 3315, 3315, 3483, 3999, 1806, 1806, 1806, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"X", 10, {771, 771, 903, 903, 462, 462, 204, 204, 252, 120, 120, 252, 204, 204, 462, 390, 903, 771, 771, 771, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Y", 10, {771, 771, 903, 390, 462, 204, 252, 120, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Z", 10, {1023, 1023, 3, 7, 6, 12, 12, 24, 24, 48, 48, 96, 96, 192, 192, 384, 896, 768, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"[", 5, {15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\\", 6, {32, 48, 48, 48, 56, 56, 24, 28, 28, 12, 12, 14, 6, 6, 7, 7, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"]", 5, {15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"^", 6, {12, 30, 30, 63, 63, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 8, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, } }, {"`", 5, {4, 6, 6, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"a", 7, {0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 7, 3, 3, 63, 127, 99, 99, 99, 127, 59, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"b", 7, {96, 96, 96, 96, 96, 96, 96, 96, 110, 127, 127, 115, 99, 99, 99, 99, 115, 127, 127, 110, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"c", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 63, 51, 112, 96, 96, 96, 112, 51, 63, 28, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"d", 7, {3, 3, 3, 3, 3, 3, 3, 3, 27, 63, 63, 119, 99, 99, 99, 99, 119, 127, 63, 27, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"e", 7, {0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 127, 99, 99, 127, 127, 96, 96, 115, 63, 30, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"f", 6, {14, 31, 59, 48, 48, 48, 48, 48, 63, 63, 63, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"g", 7, {0, 0, 0, 0, 0, 0, 0, 0, 27, 63, 127, 103, 99, 99, 99, 99, 103, 127, 63, 27, 3, 3, 3, 3, 3, 103, 126, 60, } }, {"h", 7, {96, 96, 96, 96, 96, 96, 96, 96, 96, 126, 127, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"i", 4, {0, 0, 0, 7, 7, 7, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"j", 7, {0, 0, 0, 7, 7, 7, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 102, 102, 102, 126, 60, } }, {"k", 7, {96, 96, 96, 96, 96, 96, 96, 96, 99, 103, 126, 124, 120, 112, 112, 120, 124, 126, 103, 99, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"l", 4, {7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"m", 10, {0, 0, 0, 0, 0, 0, 0, 0, 972, 1022, 1023, 819, 819, 819, 819, 819, 819, 819, 819, 819, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"n", 7, {0, 0, 0, 0, 0, 0, 0, 0, 102, 127, 127, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"o", 7, {0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 62, 119, 99, 99, 99, 99, 119, 62, 62, 28, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"p", 7, {0, 0, 0, 0, 0, 0, 0, 0, 108, 126, 119, 99, 99, 99, 99, 99, 99, 119, 126, 108, 96, 96, 96, 96, 96, 96, 96, 96, } }, {"q", 7, {0, 0, 0, 0, 0, 0, 0, 0, 59, 127, 103, 99, 99, 99, 99, 99, 99, 103, 127, 59, 3, 3, 3, 3, 3, 3, 3, 3, } }, {"r", 7, {0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 99, 99, 96, 96, 96, 96, 96, 96, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"s", 7, {0, 0, 0, 0, 0, 0, 0, 0, 30, 63, 115, 96, 112, 126, 63, 7, 3, 103, 126, 60, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"t", 7, {0, 0, 0, 0, 0, 0, 24, 24, 126, 126, 24, 24, 24, 24, 24, 24, 24, 24, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"u", 7, {0, 0, 0, 0, 0, 0, 0, 0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 103, 127, 59, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"v", 7, {0, 0, 0, 0, 0, 0, 0, 0, 99, 99, 99, 99, 119, 119, 54, 54, 62, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"w", 10, {0, 0, 0, 0, 0, 0, 0, 0, 819, 819, 819, 819, 891, 891, 1023, 1023, 462, 462, 390, 390, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"x", 7, {0, 0, 0, 0, 0, 0, 0, 0, 99, 99, 99, 119, 62, 28, 28, 62, 119, 99, 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"y", 7, {0, 0, 0, 0, 0, 0, 0, 0, 99, 99, 99, 99, 51, 51, 59, 27, 31, 15, 14, 6, 6, 14, 12, 12, 28, 24, 56, 48, } }, {"z", 7, {0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 7, 6, 14, 28, 24, 56, 48, 112, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"{", 5, {2, 6, 6, 6, 6, 6, 4, 12, 12, 8, 12, 12, 12, 4, 6, 6, 6, 6, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"|", 4, {7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"}", 5, {4, 6, 6, 6, 6, 6, 2, 3, 3, 1, 3, 3, 3, 2, 6, 6, 6, 6, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"~", 7, {0, 0, 0, 0, 0, 0, 56, 124, 31, 31, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines28 = sizeof (Outlines28)/sizeof (Outlines28 [0] ); const int Height28 = sizeof (Outlines28 [0].rows)/sizeof (Outlines28 [0].rows [0] ); int FindRows28 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines28) { j = i; while (j < NumOutlines28 && ((position > 0 && (strlen (Outlines28 [j].title) <= position || memcmp (Outlines28 [i].title, Outlines28 [j].title, position) != 0) ) || Outlines28 [j].title [position] != c) ) j++; if (j >= NumOutlines28) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines28 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height28); } i = j; position++; c = getchar (); } if (i < NumOutlines28) { j = i; while (j < NumOutlines28 && ((position > 0 && (strlen (Outlines28 [j].title) < position || memcmp (Outlines28 [i].title, Outlines28 [j].title, position) != 0) ) || Outlines28 [j].title [position] != '\0') ) j++; if (j >= NumOutlines28) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines28 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height28); } i = j; } if (i < NumOutlines28) { WidthPtr [0] = Outlines28 [i].width; RowsPtr [0] = Outlines28 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [37]; } Outlines37 [] = { {"!", 5, {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 6, {51, 51, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"#", 10, {0, 0, 0, 0, 0, 0, 0, 66, 66, 198, 198, 198, 198, 1023, 1023, 462, 462, 462, 1023, 1023, 1023, 396, 396, 396, 264, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"$", 10, {48, 48, 48, 48, 120, 510, 510, 951, 951, 816, 816, 944, 944, 496, 252, 126, 62, 55, 55, 51, 51, 951, 438, 510, 252, 120, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, } }, {"%", 11, {387, 963, 2019, 1639, 1638, 1646, 2030, 972, 988, 24, 56, 48, 112, 112, 96, 224, 192, 478, 414, 959, 947, 819, 1847, 1599, 1566, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"&", 11, {96, 240, 248, 472, 472, 472, 408, 216, 248, 496, 1008, 992, 864, 1904, 1904, 1584, 1592, 1595, 1823, 1823, 1823, 782, 910, 508, 252, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 4, {3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"(", 5, {0, 3, 7, 7, 14, 12, 12, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 28, 28, 12, 12, 14, 7, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {")", 6, {0, 24, 28, 30, 14, 6, 6, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 6, 6, 14, 30, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"*", 8, {195, 195, 231, 102, 126, 60, 255, 255, 255, 60, 126, 231, 231, 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 8, {0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 255, 255, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 4, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, } }, {"-", 8, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {".", 5, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"/", 8, {1, 3, 3, 3, 7, 7, 6, 14, 14, 12, 12, 28, 24, 24, 56, 48, 48, 112, 112, 96, 224, 224, 192, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"0", 13, {496, 1016, 2044, 3870, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7399, 7399, 7399, 7399, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 3870, 2044, 1016, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"1", 8, {6, 14, 30, 30, 30, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"2", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 30, 60, 120, 240, 480, 960, 8191, 8191, 8191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"3", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7175, 7, 7, 7, 15, 30, 252, 252, 254, 15, 7, 7, 7, 7175, 7175, 7175, 7695, 4094, 2044, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"4", 13, {28, 60, 124, 252, 252, 476, 412, 924, 1820, 1820, 3612, 8191, 8191, 8191, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"5", 13, {8191, 8191, 8191, 7168, 7168, 7168, 7168, 7168, 7168, 8176, 8184, 8188, 30, 15, 7, 7, 7, 7, 7, 7, 15, 30, 60, 8184, 8176, 8160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"6", 13, {63, 127, 255, 480, 960, 1920, 3840, 7680, 7168, 7168, 7168, 7672, 8188, 8190, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 4094, 2044, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"7", 13, {8191, 8191, 8191, 15, 14, 14, 30, 28, 60, 56, 120, 112, 240, 224, 480, 448, 960, 896, 1920, 1792, 3840, 3584, 7680, 7168, 7168, 7168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"8", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 3870, 2044, 2044, 3870, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 4094, 2044, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"9", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 4095, 2047, 1015, 7, 7, 7, 14, 30, 60, 120, 240, 8160, 8128, 8064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {":", 5, {0, 0, 0, 0, 0, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {";", 5, {0, 0, 0, 0, 0, 0, 0, 6, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, } }, {"<", 8, {3, 3, 7, 14, 14, 28, 24, 56, 112, 112, 224, 192, 192, 192, 192, 224, 112, 112, 56, 24, 28, 14, 14, 7, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"=", 8, {0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {">", 8, {0, 0, 0, 0, 192, 224, 112, 56, 28, 30, 14, 7, 3, 3, 7, 14, 28, 60, 56, 112, 224, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 10, {120, 252, 462, 390, 903, 903, 771, 3, 3, 7, 7, 14, 30, 28, 48, 48, 48, 48, 48, 48, 0, 0, 48, 120, 120, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"@", 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 496, 1016, 792, 1912, 1912, 1788, 1788, 1788, 1912, 1912, 796, 1022, 511, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"A", 13, {224, 224, 496, 496, 952, 952, 952, 1820, 1820, 1820, 3598, 3598, 3598, 4094, 4094, 8191, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"B", 13, {8176, 8184, 8188, 7198, 7183, 7175, 7175, 7175, 7175, 7183, 7198, 8188, 8184, 8184, 7228, 7198, 7183, 7175, 7175, 7175, 7175, 7183, 7198, 8188, 8184, 8176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"C", 13, {496, 1016, 2044, 3870, 7695, 7175, 7175, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7175, 7175, 7695, 3870, 2044, 1016, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"D", 13, {8128, 8160, 8176, 7288, 7228, 7198, 7183, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7183, 7198, 7228, 8184, 8176, 8160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"E", 13, {8191, 8191, 8191, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 8184, 8184, 8184, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 8191, 8191, 8191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"F", 13, {8191, 8191, 8191, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 8184, 8184, 8184, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"G", 13, {496, 1016, 2044, 3870, 7695, 7175, 7175, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7199, 7199, 7199, 7175, 7175, 7175, 7175, 7695, 3870, 2044, 1016, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"H", 13, {7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 8191, 8191, 8191, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"I", 8, {31, 31, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"J", 12, {31, 31, 31, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 3598, 3598, 3870, 2044, 1016, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"K", 13, {7175, 7175, 7183, 7198, 7228, 7288, 7408, 7648, 8128, 8064, 7936, 7680, 7168, 7168, 7680, 7936, 8064, 8128, 7648, 7408, 7288, 7228, 7198, 7183, 7175, 7175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"L", 13, {7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 8191, 8191, 8191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"M", 16, {49155, 57351, 57351, 61455, 61455, 63519, 63519, 64575, 64575, 64575, 65151, 61047, 61047, 58983, 59367, 59367, 58311, 58311, 57799, 57799, 57799, 57351, 57351, 57351, 57351, 57351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"N", 14, {14343, 14343, 15367, 15879, 16135, 16135, 16263, 15239, 15303, 14791, 14791, 14823, 14567, 14567, 14567, 14455, 14455, 14399, 14399, 14399, 14367, 14367, 14367, 14351, 14343, 14343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"O", 13, {496, 1016, 2044, 3870, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 3870, 2044, 1016, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"P", 13, {7664, 8184, 8188, 7710, 7183, 7175, 7175, 7175, 7183, 7710, 8188, 8184, 7664, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 7168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Q", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 3870, 2044, 1016, 508, 30, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, } }, {"R", 13, {8184, 8188, 8190, 7183, 7175, 7175, 7175, 7175, 7175, 7183, 7198, 8188, 8184, 8176, 7648, 7392, 7392, 7280, 7224, 7224, 7196, 7182, 7182, 7183, 7175, 7175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"S", 13, {1016, 2044, 4094, 7695, 7175, 7175, 7168, 7168, 7168, 7168, 7680, 3840, 2040, 1020, 510, 15, 7, 7, 7, 7, 7175, 7183, 7710, 4092, 2040, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"T", 13, {8191, 8191, 8191, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"U", 13, {7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 4094, 2044, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"V", 13, {7175, 7175, 7175, 7175, 7175, 7175, 7175, 7695, 3598, 3598, 3870, 1820, 1820, 1820, 1820, 1820, 1820, 792, 792, 952, 952, 496, 496, 224, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"W", 16, {57351, 57351, 57351, 57351, 57351, 57351, 57351, 57351, 57351, 57351, 57351, 57799, 57799, 57799, 57799, 58311, 58311, 59367, 59366, 30318, 32382, 31868, 14396, 14364, 14364, 14364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"X", 13, {7175, 7175, 7175, 7175, 3598, 3598, 1820, 1820, 952, 1016, 496, 496, 224, 224, 496, 496, 1016, 952, 1820, 1820, 3598, 3598, 7175, 7175, 7175, 7175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Y", 13, {7175, 7175, 7175, 3598, 3598, 1548, 1820, 952, 1016, 496, 496, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Z", 13, {8191, 8191, 8191, 7, 14, 14, 28, 28, 56, 56, 112, 112, 224, 224, 448, 448, 896, 896, 1792, 1792, 3584, 3584, 7168, 8191, 8191, 8191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"[", 7, {63, 63, 63, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\\", 8, {128, 192, 192, 192, 224, 224, 96, 112, 112, 48, 48, 56, 24, 24, 28, 12, 12, 14, 14, 6, 7, 7, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"]", 7, {63, 63, 63, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"^", 8, {24, 60, 60, 126, 126, 102, 231, 231, 195, 195, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 11, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047, 2047, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"`", 7, {8, 8, 12, 12, 14, 6, 7, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"a", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 126, 127, 7, 3, 3, 511, 1023, 1023, 903, 903, 903, 1023, 1023, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"b", 10, {896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 956, 1022, 1023, 967, 903, 903, 903, 903, 903, 903, 903, 967, 1022, 1022, 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"c", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 254, 511, 967, 903, 896, 768, 768, 768, 896, 903, 967, 511, 254, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"d", 10, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 247, 511, 1023, 911, 903, 903, 903, 903, 903, 903, 903, 911, 1023, 511, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"e", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 252, 510, 975, 903, 903, 1023, 1023, 1023, 896, 896, 967, 511, 254, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"f", 10, {124, 254, 511, 967, 903, 896, 896, 896, 896, 896, 896, 1020, 1020, 1020, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"g", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 511, 1023, 911, 903, 903, 903, 903, 903, 903, 903, 911, 1023, 511, 247, 7, 7, 7, 7, 7, 7, 903, 975, 1022, 508, 120, } }, {"h", 10, {896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 958, 1023, 1023, 967, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"i", 5, {0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"j", 9, {0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 455, 455, 455, 511, 254, 124, } }, {"k", 10, {896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 903, 911, 927, 952, 1008, 992, 960, 896, 960, 992, 1008, 952, 927, 911, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"l", 5, {15, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"m", 15, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29692, 32766, 32767, 31175, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"n", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 956, 1022, 1023, 967, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"o", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 252, 510, 975, 903, 903, 903, 903, 903, 903, 903, 975, 510, 252, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"p", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 956, 1022, 1023, 967, 903, 903, 903, 903, 903, 903, 903, 967, 1023, 1022, 956, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, } }, {"q", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 511, 1023, 911, 903, 903, 903, 903, 903, 903, 903, 911, 1023, 511, 247, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, } }, {"r", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 956, 1022, 1023, 967, 903, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"s", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 510, 1023, 903, 896, 896, 504, 252, 126, 7, 7, 903, 1023, 510, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"t", 10, {0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 224, 1020, 1020, 1020, 224, 224, 224, 224, 224, 224, 224, 224, 231, 255, 126, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"u", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 911, 1023, 511, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"v", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 903, 903, 903, 903, 903, 903, 462, 462, 462, 252, 252, 120, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"w", 15, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29127, 29127, 29127, 29127, 29127, 29127, 29127, 29671, 29671, 32767, 16254, 7740, 7740, 3640, 3096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"x", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 903, 975, 462, 204, 252, 120, 120, 120, 252, 204, 462, 975, 903, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"y", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 903, 903, 903, 903, 455, 455, 455, 487, 231, 231, 255, 127, 62, 28, 28, 28, 28, 28, 28, 60, 60, 120, 240, 480, 448, } }, {"z", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1023, 1023, 1023, 14, 14, 30, 60, 120, 240, 480, 448, 448, 1023, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"{", 7, {7, 15, 31, 60, 56, 56, 60, 28, 28, 28, 56, 56, 112, 112, 56, 56, 28, 28, 28, 60, 56, 56, 60, 31, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"|", 4, {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"}", 8, {112, 120, 124, 30, 14, 14, 30, 28, 28, 30, 14, 14, 7, 7, 14, 14, 30, 28, 28, 30, 14, 14, 30, 124, 120, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"~", 10, {0, 0, 0, 0, 0, 0, 0, 192, 480, 1008, 816, 51, 63, 30, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines37 = sizeof (Outlines37)/sizeof (Outlines37 [0] ); const int Height37 = sizeof (Outlines37 [0].rows)/sizeof (Outlines37 [0].rows [0] ); int FindRows37 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines37) { j = i; while (j < NumOutlines37 && ((position > 0 && (strlen (Outlines37 [j].title) <= position || memcmp (Outlines37 [i].title, Outlines37 [j].title, position) != 0) ) || Outlines37 [j].title [position] != c) ) j++; if (j >= NumOutlines37) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines37 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height37); } i = j; position++; c = getchar (); } if (i < NumOutlines37) { j = i; while (j < NumOutlines37 && ((position > 0 && (strlen (Outlines37 [j].title) < position || memcmp (Outlines37 [i].title, Outlines37 [j].title, position) != 0) ) || Outlines37 [j].title [position] != '\0') ) j++; if (j >= NumOutlines37) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines37 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height37); } i = j; } if (i < NumOutlines37) { WidthPtr [0] = Outlines37 [i].width; RowsPtr [0] = Outlines37 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [59]; } Outlines59 [] = { {"!", 7, {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 10, {903, 903, 903, 903, 903, 903, 903, 903, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"#", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 774, 774, 1806, 1806, 1806, 1806, 1806, 1806, 16383, 16383, 16383, 3612, 3612, 3612, 3612, 3612, 16383, 16383, 16383, 16383, 7224, 7224, 7224, 7224, 7224, 6192, 6192, 6192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"$", 14, {480, 480, 480, 480, 480, 480, 480, 2040, 4092, 4092, 8190, 7662, 15855, 14823, 14816, 14816, 14816, 14816, 15840, 7648, 8160, 8160, 4064, 2040, 1020, 508, 510, 494, 495, 487, 487, 487, 487, 14823, 15855, 7662, 7662, 8190, 4092, 2040, 1008, 480, 480, 480, 480, 480, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"%", 17, {14339, 32259, 65031, 61191, 124687, 116494, 116494, 116510, 116508, 116540, 124728, 61240, 65144, 31856, 14576, 224, 480, 480, 448, 960, 896, 1920, 1792, 1792, 3840, 3584, 7680, 7292, 7420, 15614, 14798, 31175, 29127, 61895, 61895, 57799, 123343, 115182, 114942, 98556, 98424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"&", 17, {896, 4032, 4032, 7904, 7392, 7392, 7408, 15472, 15472, 15472, 14576, 7408, 7392, 7392, 8160, 16320, 32640, 32512, 63232, 59136, 59264, 58240, 123776, 115648, 115648, 115136, 115136, 115175, 114919, 114919, 123135, 123007, 57470, 57470, 61502, 28732, 30780, 15480, 8184, 8184, 1992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 7, {15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"(", 6, {2, 3, 7, 7, 7, 14, 14, 14, 30, 28, 28, 28, 28, 60, 60, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 60, 28, 28, 28, 28, 28, 14, 14, 14, 15, 7, 7, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {")", 10, {16, 48, 56, 56, 56, 28, 28, 28, 30, 14, 14, 14, 14, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 15, 14, 14, 14, 14, 14, 28, 28, 28, 60, 56, 56, 48, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"*", 12, {3075, 3591, 3591, 3855, 3855, 1950, 924, 1020, 504, 504, 4095, 4095, 4095, 504, 504, 1020, 924, 1950, 1806, 3855, 3591, 3591, 3075, 3075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 240, 240, 240, 240, 240, 240, 4095, 4095, 4095, 240, 240, 240, 240, 240, 240, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 7, 7, 15, 14, 14, 14, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"-", 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4095, 4095, 4095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {".", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"/", 12, {3, 3, 3, 7, 7, 7, 15, 14, 14, 14, 30, 28, 28, 60, 56, 56, 56, 120, 112, 112, 240, 224, 224, 224, 480, 448, 448, 960, 896, 896, 1920, 1920, 1792, 1792, 3840, 3584, 3584, 3584, 3072, 3072, 3072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"0", 19, {3968, 8128, 16352, 32752, 30960, 61560, 57400, 122940, 122908, 114716, 245790, 245790, 491535, 491535, 491535, 491535, 491535, 491535, 493327, 495503, 495503, 495503, 493327, 491535, 491535, 491535, 491535, 491535, 507919, 245790, 245790, 245790, 122940, 122940, 122940, 61560, 63736, 32752, 16352, 8128, 3968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"1", 10, {30, 30, 30, 30, 62, 62, 62, 62, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 63, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"2", 19, {4064, 16368, 65528, 131068, 122942, 245791, 229391, 491535, 491535, 491535, 15, 15, 15, 15, 15, 15, 15, 15, 15, 31, 30, 30, 30, 30, 60, 60, 56, 120, 240, 240, 480, 992, 960, 1984, 3968, 7936, 32256, 524287, 524287, 524287, 524287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"3", 19, {4032, 16368, 32760, 65532, 127038, 253982, 507919, 491535, 491535, 491535, 491535, 15, 15, 15, 15, 15, 30, 62, 124, 2040, 2032, 2040, 2044, 62, 30, 15, 15, 15, 15, 15, 491535, 491535, 491535, 491535, 491534, 245790, 122942, 131068, 65528, 32752, 8128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"4", 19, {120, 120, 248, 248, 504, 1016, 1016, 2040, 3960, 3960, 7800, 15480, 31864, 30840, 61560, 127096, 123000, 245880, 245880, 524287, 524287, 524287, 524287, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"5", 19, {524287, 524287, 524287, 524287, 458752, 458752, 458752, 458752, 458752, 458752, 458752, 458752, 458752, 458752, 523776, 524160, 524256, 524272, 504, 124, 62, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 30, 62, 124, 248, 496, 262112, 262080, 262016, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"6", 19, {15, 255, 1023, 2047, 4064, 7936, 15872, 31744, 63488, 126976, 122880, 245760, 245760, 491520, 491520, 491520, 458752, 458752, 466912, 491504, 524280, 524284, 516158, 507934, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 229391, 229391, 245790, 254014, 131068, 131064, 65520, 32736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"7", 19, {524287, 524287, 524287, 524287, 30, 30, 30, 60, 60, 60, 120, 120, 248, 240, 240, 496, 480, 992, 960, 1984, 1920, 3968, 3840, 7936, 7680, 7680, 15360, 15360, 30720, 30720, 61440, 61440, 122880, 122880, 253952, 245760, 507904, 507904, 491520, 491520, 491520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"8", 19, {16368, 32760, 65532, 131070, 254015, 507935, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 507935, 516159, 258174, 131068, 65528, 65532, 131070, 254015, 507935, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 507935, 516159, 262142, 131068, 65528, 32752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"9", 19, {16352, 32752, 65528, 131068, 258174, 254014, 507935, 507935, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 507919, 507935, 254015, 258175, 131071, 65527, 32743, 16327, 7, 15, 15, 15, 31, 30, 62, 124, 248, 496, 992, 1984, 16256, 524032, 523776, 522240, 516096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {":", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {";", 7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 7, 7, 15, 14, 14, 14, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"<", 12, {3, 7, 7, 15, 14, 30, 60, 60, 120, 112, 240, 480, 480, 960, 896, 1920, 1792, 3840, 3584, 3584, 3072, 3072, 3584, 3840, 3840, 1920, 896, 960, 448, 480, 240, 240, 120, 56, 60, 28, 30, 15, 7, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"=", 12, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4095, 4095, 4095, 0, 0, 0, 0, 0, 4095, 4095, 4095, 4095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {">", 12, {0, 0, 0, 0, 0, 0, 3584, 3584, 3840, 1920, 960, 992, 480, 240, 120, 60, 30, 30, 15, 7, 3, 7, 15, 15, 30, 60, 120, 240, 240, 480, 960, 1920, 3840, 3840, 3584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 14, {480, 1008, 2040, 3900, 3612, 7182, 7182, 15375, 14343, 14343, 14343, 14343, 7, 7, 7, 15, 14, 14, 30, 28, 124, 120, 112, 480, 480, 480, 480, 480, 480, 480, 480, 480, 0, 0, 0, 0, 0, 480, 480, 480, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"@", 17, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7936, 16256, 32704, 29152, 61664, 57568, 58336, 124896, 116720, 118640, 118392, 118392, 118392, 118640, 116720, 124896, 58336, 57584, 61688, 29180, 32766, 16287, 7943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"A", 19, {1792, 3968, 3968, 3968, 8128, 8128, 7616, 15840, 15840, 30960, 30960, 30960, 30960, 61560, 61560, 61560, 122940, 122940, 122940, 114716, 245790, 262142, 262142, 262142, 524287, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"B", 19, {524160, 524256, 524272, 524280, 491772, 491582, 491551, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491551, 491582, 491644, 524280, 524272, 524256, 524272, 491768, 491644, 491582, 491551, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491551, 491582, 491644, 524280, 524272, 524256, 524224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"C", 19, {16320, 32736, 65520, 131064, 258172, 516158, 507935, 491535, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 507904, 516126, 258110, 129148, 65528, 32752, 16352, 8128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"D", 19, {524224, 524256, 524272, 524280, 491772, 491646, 491583, 491551, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491551, 491583, 491646, 491772, 524280, 524272, 524256, 524224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"E", 19, {524287, 524287, 524287, 524287, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 524272, 524272, 524272, 524272, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 524287, 524287, 524287, 524287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"F", 19, {524287, 524287, 524287, 524287, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 524272, 524272, 524272, 524272, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"G", 19, {8128, 16352, 32752, 65528, 127100, 122940, 122940, 245822, 245790, 245790, 229406, 491550, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491775, 491775, 491775, 491775, 491535, 491535, 491535, 491535, 245791, 245791, 245822, 122940, 123004, 127224, 65520, 65504, 32704, 16256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"H", 19, {491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 524287, 524287, 524287, 524287, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"I", 10, {63, 63, 63, 63, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 63, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"J", 17, {63, 63, 63, 63, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 122910, 122910, 122910, 127038, 131068, 65528, 32752, 8128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"K", 19, {491527, 491527, 491535, 491551, 491582, 491644, 491644, 491768, 491760, 492000, 492480, 493440, 495488, 499456, 507392, 523264, 522240, 520192, 516096, 507904, 507904, 516096, 520192, 522240, 522240, 523264, 507392, 499456, 495488, 493440, 493504, 492512, 492016, 491760, 491640, 491644, 491580, 491550, 491551, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"L", 19, {491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 524287, 524287, 524287, 524287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"M", 24, {15728655, 15728655, 15728655, 15728655, 15728655, 16252959, 16252959, 16515135, 16515135, 16646207, 16646271, 16646271, 16711807, 16711935, 16711935, 16187631, 16220655, 16220655, 15958479, 15975375, 15844239, 15853455, 15853455, 15793935, 15793935, 15760911, 15760911, 15744015, 15744015, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"N", 19, {491535, 491535, 491535, 491535, 507919, 507919, 516111, 516111, 520207, 520207, 520207, 522255, 522255, 523279, 506895, 506895, 499215, 499215, 499215, 495375, 495375, 493455, 493455, 493519, 492495, 492495, 492015, 492015, 492031, 491775, 491775, 491647, 491647, 491583, 491583, 491551, 491551, 491535, 491535, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"O", 19, {4032, 8160, 16368, 32760, 63736, 122940, 122942, 245790, 245790, 507935, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 507935, 507934, 245790, 254012, 122936, 129272, 65520, 32736, 16320, 8064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"P", 19, {499584, 524256, 524280, 524280, 516348, 491582, 491551, 491535, 491535, 491535, 491535, 491535, 491535, 491551, 491582, 491644, 492024, 524272, 524256, 524224, 524032, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 491520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Q", 19, {8128, 16352, 32752, 32760, 61688, 57468, 122940, 114750, 245790, 245791, 245775, 245775, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491919, 492431, 508879, 246751, 246783, 254462, 127486, 131068, 65528, 32752, 8176, 120, 120, 124, 60, 60, 62, 30, 30, 31, 15, 15, 15, 0, 0, 0, 0, 0, 0, } }, {"R", 19, {524160, 524224, 524272, 524280, 491772, 491582, 491551, 491551, 491535, 491535, 491535, 491535, 491535, 491551, 491582, 491644, 491768, 524272, 524256, 524224, 523776, 499200, 499200, 499200, 495360, 495360, 493440, 493440, 492480, 492000, 492000, 491760, 491768, 491640, 491580, 491582, 491550, 491551, 491535, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"S", 19, {8064, 32736, 65528, 131068, 123006, 245791, 229391, 491535, 491535, 491520, 491520, 491520, 491520, 491520, 491520, 245760, 245760, 122880, 126976, 65472, 32752, 16376, 4092, 124, 30, 30, 15, 15, 15, 15, 15, 15, 491535, 491535, 491535, 507934, 258110, 262140, 131064, 65520, 16352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"T", 19, {524287, 524287, 524287, 524287, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"U", 19, {491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 245790, 262142, 131068, 65528, 16352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"V", 19, {491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 491535, 507935, 245790, 245790, 245790, 245790, 245790, 245790, 122940, 122940, 122940, 57404, 61564, 61560, 61560, 61560, 63736, 30960, 30960, 30960, 14560, 14560, 15840, 15840, 7616, 8128, 8128, 8128, 3968, 3968, 3968, 1792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"W", 24, {15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15728655, 15744015, 15760399, 15760911, 15760911, 16318239, 7929631, 7923486, 7923614, 7989150, 7979934, 7979934, 8111070, 3916764, 4162044, 4162044, 4129020, 2031864, 1966200, 1966200, 1966200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"X", 19, {491535, 491535, 491535, 491535, 507935, 245790, 254014, 254014, 122940, 122940, 127096, 61560, 63728, 30960, 32224, 16352, 16320, 8128, 8128, 3968, 3968, 8128, 8128, 8128, 8128, 15840, 14560, 30960, 30960, 61560, 61560, 122940, 122940, 114718, 245790, 245791, 507935, 491535, 491535, 491535, 491535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Y", 19, {491535, 491535, 491535, 491535, 245790, 245790, 254012, 122940, 122936, 127096, 61552, 30960, 30944, 31200, 16320, 16320, 8064, 7936, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Z", 19, {524287, 524287, 524287, 524287, 30, 30, 62, 60, 60, 124, 120, 248, 240, 496, 480, 480, 960, 960, 1984, 1920, 3968, 3840, 7936, 7680, 7680, 15872, 15360, 31744, 30720, 30720, 61440, 61440, 122880, 122880, 253952, 245760, 245760, 524287, 524287, 524287, 524287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"[", 10, {255, 255, 255, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\\", 12, {3072, 3072, 3072, 3584, 3584, 3584, 3840, 1792, 1792, 1792, 1920, 896, 896, 960, 448, 448, 448, 480, 224, 224, 240, 112, 112, 112, 120, 56, 56, 60, 28, 28, 30, 30, 14, 14, 15, 7, 7, 7, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"]", 10, {255, 255, 255, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"^", 12, {240, 240, 504, 504, 504, 1020, 1020, 924, 1950, 1806, 1806, 3855, 3591, 3591, 3591, 3075, 3075, 3075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 17, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131071, 131071, 131071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"`", 10, {32, 48, 48, 56, 56, 56, 60, 28, 30, 14, 14, 15, 7, 7, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"a", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4094, 4095, 4095, 4095, 15, 7, 7, 7, 7, 2031, 4095, 8191, 16383, 15391, 14351, 14351, 14351, 14351, 15391, 16383, 8191, 4095, 2031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"b", 14, {15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15600, 16376, 16380, 16382, 16159, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 16159, 16382, 16380, 16376, 15600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"c", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1008, 2040, 4092, 8190, 15903, 15375, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15375, 15903, 8190, 4092, 2040, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"d", 14, {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 975, 2047, 4095, 8191, 15935, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15935, 8191, 4095, 2047, 975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"e", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1008, 2040, 4092, 8190, 15903, 15375, 15375, 15375, 15375, 15375, 16383, 16383, 16383, 16383, 15360, 15360, 15360, 15360, 15902, 8190, 4092, 2040, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"f", 14, {1008, 2040, 4092, 8190, 15903, 15375, 15375, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 16376, 16376, 16376, 16376, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"g", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 2047, 4095, 8191, 15935, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15935, 8191, 4095, 2047, 975, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7695, 7967, 4094, 2044, 1016, 496, } }, {"h", 14, {15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15608, 16380, 16382, 16383, 16159, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"i", 7, {0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"j", 13, {0, 0, 0, 0, 0, 0, 30, 31, 31, 31, 14, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3855, 3855, 3999, 4094, 2044, 1016, 496, } }, {"k", 14, {15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15375, 15391, 15422, 15484, 15608, 15856, 16352, 16320, 16256, 16128, 15872, 15360, 15872, 16128, 16256, 16320, 16352, 15856, 15608, 15484, 15422, 15391, 15375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"l", 7, {31, 31, 31, 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"m", 20, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 999408, 1048568, 1048572, 1048574, 1036063, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 986895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"n", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15608, 16380, 16382, 16383, 16159, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"o", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1008, 2040, 4092, 8190, 15903, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15903, 8190, 4092, 2040, 1008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"p", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15600, 16376, 16380, 16382, 16159, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 16159, 16382, 16380, 16376, 15600, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, } }, {"q", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 2047, 4095, 8191, 15935, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 7743, 8191, 4095, 2047, 975, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, } }, {"r", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15608, 16380, 16382, 16383, 16143, 15367, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 15360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"s", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1020, 2046, 4095, 8191, 15887, 15360, 15360, 15360, 15360, 15872, 8184, 4092, 2046, 1023, 31, 15, 15, 14351, 15391, 16382, 8188, 4088, 2032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"t", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3840, 3840, 3840, 3840, 3840, 16376, 16376, 16376, 16376, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3847, 3983, 4095, 2046, 1020, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"u", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 15935, 16383, 8191, 4095, 1999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"v", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15375, 15375, 15375, 15375, 15375, 15375, 15375, 7710, 7710, 7710, 7710, 7710, 3612, 3900, 3900, 3900, 2040, 2040, 2040, 1008, 480, 480, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"w", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 493327, 493327, 493327, 493327, 495503, 495503, 495503, 499663, 499663, 499663, 499151, 507375, 245230, 243950, 260350, 129276, 129276, 129276, 127100, 127100, 61560, 61560, 61560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"x", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14343, 15375, 15375, 15375, 7710, 3612, 3900, 1848, 2040, 1008, 480, 480, 480, 1008, 2040, 1848, 3900, 3612, 7710, 15375, 15375, 15375, 14343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"y", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14351, 14351, 15375, 15375, 15887, 7695, 7695, 3855, 3855, 3855, 1807, 1935, 910, 910, 974, 462, 510, 252, 252, 252, 124, 124, 60, 60, 120, 120, 120, 120, 112, 112, 240, 240, 224, 224, 480, 448, 960, 16256, 16256, 16128, 7168, } }, {"z", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16383, 16383, 16383, 16383, 30, 28, 60, 60, 120, 240, 240, 480, 448, 960, 1920, 1920, 3840, 3584, 7680, 16383, 16383, 16383, 16383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"{", 9, {3, 7, 15, 30, 28, 28, 28, 56, 56, 56, 56, 56, 56, 56, 48, 56, 56, 120, 240, 224, 192, 224, 240, 248, 120, 56, 56, 56, 56, 56, 56, 56, 56, 56, 60, 28, 28, 28, 15, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"|", 7, {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"}", 11, {192, 224, 240, 120, 56, 56, 56, 28, 28, 28, 28, 28, 28, 28, 12, 28, 28, 30, 15, 7, 3, 7, 15, 31, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, 60, 56, 56, 56, 240, 240, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"~", 14, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3840, 8064, 8128, 15808, 14816, 14816, 487, 231, 254, 254, 124, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines59 = sizeof (Outlines59)/sizeof (Outlines59 [0] ); const int Height59 = sizeof (Outlines59 [0].rows)/sizeof (Outlines59 [0].rows [0] ); int FindRows59 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines59) { j = i; while (j < NumOutlines59 && ((position > 0 && (strlen (Outlines59 [j].title) <= position || memcmp (Outlines59 [i].title, Outlines59 [j].title, position) != 0) ) || Outlines59 [j].title [position] != c) ) j++; if (j >= NumOutlines59) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines59 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height59); } i = j; position++; c = getchar (); } if (i < NumOutlines59) { j = i; while (j < NumOutlines59 && ((position > 0 && (strlen (Outlines59 [j].title) < position || memcmp (Outlines59 [i].title, Outlines59 [j].title, position) != 0) ) || Outlines59 [j].title [position] != '\0') ) j++; if (j >= NumOutlines59) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines59 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height59); } i = j; } if (i < NumOutlines59) { WidthPtr [0] = Outlines59 [i].width; RowsPtr [0] = Outlines59 [i].rows; } return c; } const struct { const char * title; const int width; const unsigned long int rows [75]; } Outlines75 [] = { {"!", 10, {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0, 0, 0, 0, 28, 62, 127, 127, 127, 127, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\"", 13, {7967, 7967, 7967, 7967, 7967, 7967, 7967, 7967, 7967, 7967, 7967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"#", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14348, 14364, 14364, 14364, 30748, 30748, 30748, 30748, 30780, 30780, 30780, 524287, 524287, 524287, 524287, 524287, 63612, 61564, 127100, 127100, 127096, 127224, 524287, 524287, 524287, 524287, 524287, 123120, 123120, 123120, 114928, 114928, 114928, 114912, 114912, 114912, 98528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"$", 19, {3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 8128, 32752, 65528, 65528, 131068, 262142, 257982, 257982, 511903, 511903, 511888, 511872, 511872, 511872, 511872, 511872, 257920, 257920, 262016, 130944, 65472, 65520, 32760, 8184, 4092, 4094, 4030, 4030, 3999, 3999, 3999, 3999, 3999, 20383, 511903, 511903, 257982, 257982, 262142, 131068, 65528, 65528, 32752, 8128, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"%", 22, {245767, 516103, 1044495, 2095119, 2095119, 1997855, 4095007, 4095038, 4095038, 4095102, 4095100, 4095100, 4095224, 2062584, 2095608, 2095600, 1045488, 517088, 99296, 1984, 1984, 4032, 3968, 3968, 7936, 7936, 15872, 15872, 32256, 31744, 31744, 63488, 63488, 129024, 127216, 127992, 254972, 255998, 509950, 511903, 1036191, 1019807, 1019807, 2035615, 2035615, 4132767, 4067231, 4065278, 3934206, 3933180, 3671036, 3670520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"&", 22, {7168, 32256, 32512, 65408, 65408, 128960, 128960, 124864, 123840, 254912, 254912, 254912, 246720, 123840, 58304, 59328, 63424, 63360, 130944, 262016, 524032, 523776, 1047552, 1047552, 2063360, 2047488, 2047488, 1981952, 4071168, 4071168, 4071168, 4071168, 4067200, 4067200, 4067231, 4065247, 4065247, 4065247, 4064255, 1967102, 2032638, 2032126, 2032126, 1016316, 1016060, 1032444, 508152, 259064, 262136, 131064, 65528, 32696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"'", 9, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"(", 8, {2, 6, 7, 15, 15, 31, 31, 31, 62, 62, 62, 60, 124, 124, 124, 124, 120, 120, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 120, 124, 124, 124, 124, 60, 62, 62, 62, 30, 31, 31, 15, 15, 15, 6, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {")", 13, {64, 96, 224, 240, 240, 248, 248, 248, 124, 124, 124, 60, 62, 62, 62, 62, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 62, 62, 62, 62, 60, 124, 124, 124, 120, 248, 248, 240, 240, 240, 96, 96, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"*", 16, {57351, 61455, 61455, 63519, 63519, 64575, 31806, 32382, 15996, 16380, 8184, 8184, 4080, 65535, 65535, 65535, 65535, 4080, 8184, 8184, 16380, 15996, 32382, 31806, 64575, 63519, 63519, 61455, 61455, 57351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"+", 16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 960, 960, 960, 960, 960, 960, 960, 960, 960, 65535, 65535, 65535, 65535, 65535, 960, 960, 960, 960, 960, 960, 960, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {",", 9, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 15, 15, 31, 31, 31, 30, 30, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"-", 16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {".", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 127, 127, 127, 127, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"/", 16, {7, 7, 7, 15, 15, 15, 15, 31, 31, 31, 62, 62, 62, 124, 124, 124, 248, 248, 248, 248, 496, 496, 496, 992, 992, 992, 1984, 1984, 1984, 1984, 3968, 3968, 3968, 7936, 7936, 7936, 15872, 15872, 15872, 31744, 31744, 31744, 31744, 63488, 63488, 63488, 61440, 61440, 61440, 57344, 57344, 57344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"0", 26, {64512, 130560, 524160, 524160, 1048512, 2066400, 4129776, 4063728, 8126712, 8126712, 7864440, 16253052, 16253052, 15728700, 32505918, 32505918, 32505918, 32505918, 31457310, 65011743, 65011743, 65011743, 65011743, 65042463, 65076255, 65142303, 65142303, 65076255, 65076255, 65042463, 65011743, 65011743, 65011743, 31457310, 31457310, 32505918, 32505918, 32505918, 15728700, 16253052, 16253052, 16253052, 8126712, 8126712, 4063728, 4063728, 2032608, 2084832, 1048512, 524160, 261888, 130560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"1", 13, {62, 62, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 127, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"2", 26, {130560, 524160, 2097120, 4194288, 8388600, 16712700, 16515324, 33030270, 32505918, 32505918, 65011743, 65011743, 65011743, 31, 31, 31, 31, 31, 31, 31, 31, 30, 62, 62, 62, 62, 60, 124, 124, 124, 248, 248, 248, 496, 496, 992, 992, 1984, 4032, 3968, 8064, 16128, 32256, 65024, 130048, 522240, 1044480, 16769024, 67108863, 67108863, 67108863, 67108863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"3", 26, {64512, 524160, 1048512, 4194288, 4194288, 8324088, 16515324, 16253052, 33030270, 32505918, 65011743, 65011743, 65011743, 65011743, 31, 31, 31, 31, 62, 62, 126, 252, 508, 2040, 32752, 32736, 32736, 32752, 32760, 1016, 252, 126, 62, 62, 31, 31, 31, 31, 65011743, 65011743, 65011743, 65011743, 32505918, 32505918, 33030270, 16515324, 16646652, 8357880, 4194288, 2097120, 1048512, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"4", 26, {992, 992, 992, 2016, 2016, 4064, 8160, 16352, 16352, 32736, 65504, 130016, 130016, 259040, 517088, 508896, 1033184, 2065376, 4129760, 4129760, 8258528, 16516064, 33031136, 33031136, 67108863, 67108863, 67108863, 67108863, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"5", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 66846720, 67092480, 33552384, 33553920, 16776960, 262080, 16352, 4080, 1016, 504, 252, 126, 62, 62, 31, 31, 31, 31, 31, 31, 31, 63, 62, 126, 124, 252, 504, 2032, 4080, 32736, 524160, 33554176, 33553408, 33550336, 33521664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"6", 26, {31, 511, 2047, 8191, 32767, 65472, 261632, 522240, 1044480, 2080768, 2064384, 4128768, 8257536, 8126464, 16515072, 16252928, 33030144, 32505856, 32505856, 31457280, 65011712, 65011712, 65011712, 65273600, 65535872, 67108832, 67108848, 67078136, 66978296, 66846972, 66584700, 66060350, 66060350, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 32505918, 32505918, 16253052, 16515324, 8258040, 8357880, 4194288, 2097120, 524160, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"7", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 31, 62, 62, 124, 124, 248, 248, 496, 496, 992, 992, 2016, 1984, 4032, 3968, 8064, 7936, 16128, 15872, 32256, 31744, 64512, 63488, 129024, 126976, 258048, 253952, 516096, 507904, 1032192, 1015808, 2064384, 2031616, 4128768, 4063232, 8257536, 8126464, 16515072, 16252928, 33030144, 32505856, 66060288, 65011712, 65011712, 62914560, 62914560, 58720256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"8", 26, {64512, 524160, 1048512, 4194288, 4194288, 8324088, 16515324, 16253052, 33030270, 32505918, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 32505918, 32505918, 33030270, 16515324, 16646652, 8357880, 4194288, 2097120, 2097120, 4194288, 8388600, 8324088, 16515324, 33030270, 32505918, 32505918, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 32505918, 32505918, 33030270, 16515324, 16646652, 8357880, 4194288, 2097120, 1048512, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"9", 26, {64512, 524160, 1048512, 2097120, 4194288, 8324088, 16515324, 16253052, 33030270, 32505918, 32505918, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 32505919, 32505919, 33030271, 16253055, 16515327, 8324095, 4194303, 2097151, 1048543, 524191, 64543, 31, 31, 31, 62, 62, 62, 124, 124, 252, 504, 1008, 2032, 4064, 8128, 16256, 65280, 523776, 8387584, 67104768, 67092480, 67043328, 66584576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {":", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 127, 127, 127, 127, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 127, 127, 127, 127, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {";", 10, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 62, 127, 127, 127, 127, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 30, 30, 62, 62, 62, 60, 60, 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"<", 16, {7, 15, 15, 31, 63, 62, 126, 124, 252, 504, 496, 1008, 992, 2016, 4032, 3968, 8064, 7936, 16128, 32256, 31744, 64512, 63488, 63488, 61440, 57344, 57344, 61440, 61440, 63488, 63488, 64512, 32256, 15872, 16128, 7936, 8064, 4032, 1984, 2016, 1008, 496, 504, 248, 252, 126, 62, 63, 31, 31, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"=", 16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {">", 16, {0, 0, 0, 0, 0, 0, 0, 0, 61440, 63488, 64512, 65024, 32256, 16128, 8064, 4032, 4064, 2032, 1008, 504, 252, 126, 63, 63, 31, 15, 7, 15, 31, 63, 126, 254, 508, 504, 1008, 2016, 4032, 8128, 16256, 16128, 32256, 64512, 63488, 61440, 61440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"?", 19, {3968, 16352, 32752, 65528, 65528, 129276, 127100, 254014, 254014, 254014, 507935, 507935, 507935, 507935, 507935, 31, 31, 31, 31, 31, 62, 62, 62, 124, 252, 1016, 1016, 1008, 992, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 0, 0, 0, 0, 1792, 3968, 8128, 8128, 8128, 8128, 3968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"@", 22, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64512, 261632, 261888, 524160, 1036160, 1017792, 2033600, 2035584, 2039680, 1982400, 4095968, 4095968, 4095456, 4094448, 4094448, 4094448, 4095456, 4095968, 4095968, 1982400, 2039680, 2035584, 2033632, 1017848, 1036284, 524286, 262015, 261695, 64543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"A", 26, {64512, 64512, 64512, 130560, 130560, 130560, 261888, 261888, 261888, 261888, 511872, 511872, 511872, 1017792, 1017792, 1017792, 2032608, 2032608, 2032608, 4063728, 4063728, 4063728, 8126712, 8126712, 8126712, 16515324, 16777212, 16777212, 16777212, 33554430, 33554430, 32505918, 65011743, 65011743, 65011743, 62914575, 62914575, 62914575, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"B", 26, {67092480, 67107840, 67108608, 67108736, 67108832, 65028080, 65013752, 65012220, 65011964, 65011838, 65011774, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011775, 65011774, 65011838, 65011964, 65012728, 65015800, 65044464, 67108800, 67108736, 67108608, 67108800, 67108832, 65019888, 65013752, 65012220, 65011964, 65011838, 65011774, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011774, 65011774, 65011838, 65011964, 65012728, 65015792, 65077216, 67108800, 67108736, 67108352, 67104768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"C", 24, {16128, 32640, 131040, 131040, 262128, 516600, 1032444, 1015932, 2031678, 2031678, 1966110, 4063262, 4063262, 3932172, 8126472, 8126472, 8126464, 8126464, 7864320, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 16252928, 7864320, 7864320, 8126464, 8126464, 8126472, 3932172, 4063260, 4063262, 4063263, 2031678, 2031678, 1015932, 1015932, 508152, 521208, 262128, 131040, 65472, 32640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"D", 26, {66846720, 67076096, 67100672, 67106816, 67107840, 65273344, 65044224, 65027968, 65015744, 65013728, 65012720, 65012720, 65012216, 65011960, 65011964, 65011836, 65011836, 65011774, 65011774, 65011774, 65011742, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011774, 65011774, 65011774, 65011774, 65011836, 65011836, 65011960, 65011960, 65012208, 65012720, 65013728, 65015776, 65019840, 65027968, 65076992, 66059776, 67107840, 67104768, 67092480, 67043328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"E", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 67108832, 67108832, 67108832, 67108832, 67108832, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 67108863, 67108863, 67108863, 67108863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"F", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 67108832, 67108832, 67108832, 67108832, 67108832, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"G", 26, {64512, 130560, 524160, 524160, 1048512, 2066400, 4129776, 4063728, 8126712, 8126712, 7864440, 16253048, 16253048, 15728688, 32505888, 32505888, 32505856, 32505856, 31457280, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65012735, 65012735, 65012735, 31458303, 31458303, 32505919, 32505919, 32505919, 15728703, 16253055, 16253055, 16253055, 8126719, 8126719, 4063743, 4063728, 2032608, 2084832, 1048512, 524160, 261888, 130560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"H", 26, {65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 67108863, 67108863, 67108863, 67108863, 67108863, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"I", 13, {127, 127, 127, 127, 127, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 127, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"J", 21, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2031647, 2064447, 1040638, 1048574, 524284, 262128, 65504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"K", 26, {65011727, 65011743, 65011775, 65011839, 65011838, 65011964, 65012216, 65012720, 65013728, 65015744, 65019840, 65027968, 65044224, 65076736, 65141760, 65271808, 65531904, 66052096, 67092480, 67076096, 67043328, 66977792, 66846720, 66584576, 66060288, 66584576, 66584576, 66846720, 66977792, 67043328, 67076096, 67092480, 66043904, 65527808, 65269760, 65140736, 65076224, 65076736, 65043968, 65027840, 65019776, 65015744, 65013728, 65013744, 65012720, 65012216, 65011964, 65011838, 65011775, 65011775, 65011743, 65011727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"L", 26, {65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 67108863, 67108863, 67108863, 67108863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"M", 32, {4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4227858495UL, 4227858495UL, 4261412991UL, 4261412991UL, 4278190335UL, 4278190335UL, 4278190335UL, 4286579199UL, 4286579199UL, 4290774015UL, 4290774015UL, 4292872191UL, 4225763295UL, 4225763295UL, 4193259423UL, 4193259423UL, 4177010463UL, 4177010463UL, 4177280799UL, 4168891935UL, 4168891935UL, 4164844575UL, 4164844575UL, 4162844703UL, 4162844703UL, 4162844703UL, 4161794079UL, 4161794079UL, 4161265695UL, 4161265695UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"N", 26, {65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 66060319, 66060319, 66584607, 66584607, 66846751, 66846751, 66977823, 66977823, 67043359, 67043359, 67076127, 66027551, 66043935, 65519647, 65527839, 65265695, 65269791, 65138719, 65140767, 65075231, 65076255, 65043487, 65043999, 65027615, 65027871, 65019679, 65019807, 65015711, 65015775, 65013727, 65013759, 65012735, 65012735, 65012223, 65012223, 65011967, 65011967, 65011839, 65011839, 65011775, 65011775, 65011743, 65011743, 65011743, 65011743, 65011743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"O", 26, {64512, 130560, 524160, 524160, 1048512, 2066400, 4129776, 4063728, 8126712, 8126712, 7864440, 16253052, 16253052, 15728700, 32505918, 32505918, 32505918, 32505918, 31457310, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 31457310, 31457310, 32505918, 32505918, 32505918, 15728700, 16253052, 16253052, 16253052, 8126712, 8126712, 4063728, 4063728, 2032608, 2084832, 1048512, 524160, 261888, 130560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"P", 26, {67092480, 67107840, 67108608, 67108800, 67108832, 65019888, 65012728, 65011964, 65011838, 65011774, 65011775, 65011743, 65011743, 65011743, 65011743, 65011743, 65011774, 65011838, 65011964, 65012732, 65015800, 67108848, 67108800, 67108736, 67108352, 67100672, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Q", 23, {15872, 32640, 65472, 131040, 262112, 254960, 508400, 491768, 1015928, 983164, 2031740, 2031676, 1966142, 4063294, 4063294, 4063262, 4063263, 3932191, 3932191, 8126495, 8126495, 8126495, 8126495, 8126479, 8126479, 8126479, 8126479, 8126479, 8126479, 8126479, 8126495, 8126495, 8126495, 8126495, 3932191, 3932191, 4063262, 4063262, 4064190, 1967038, 2032638, 2032636, 984060, 1016828, 1016824, 508920, 508400, 259056, 262128, 131064, 65528, 16376, 124, 124, 124, 62, 62, 62, 31, 31, 31, 15, 15, 15, 7, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"R", 26, {67092480, 67107840, 67108608, 67108800, 67108832, 65019888, 65012728, 65011964, 65011838, 65011774, 65011775, 65011743, 65011743, 65011743, 65011743, 65011743, 65011774, 65011838, 65011964, 65012732, 65015800, 67108848, 67108800, 67108736, 67108352, 67100672, 65257472, 65257472, 65265664, 65269760, 65138688, 65140736, 65076224, 65043456, 65043968, 65027840, 65019648, 65019776, 65015744, 65013696, 65013728, 65012720, 65012208, 65012216, 65011964, 65011836, 65011838, 65011775, 65011743, 65011743, 65011727, 65011727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"S", 26, {64512, 524160, 1048512, 4194288, 4194288, 8324088, 16515324, 16253052, 33030270, 32505918, 65011743, 65011740, 65011712, 65011712, 65011712, 65011712, 65011712, 65011712, 32505856, 32505856, 33030144, 16515072, 16646144, 8355840, 4193792, 2097024, 1048544, 262128, 32760, 1016, 252, 126, 62, 62, 31, 31, 31, 31, 31, 31, 2097183, 31457311, 32505918, 32505918, 33030270, 16515324, 16646652, 8357880, 4194288, 2097120, 1048512, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"T", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"U", 26, {65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 32505918, 33030270, 16515324, 16746492, 8388600, 4194288, 1048512, 261888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"V", 26, {65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 65011743, 62914575, 65011743, 65011743, 65011743, 65011743, 32505918, 32505918, 32505918, 32505918, 16253052, 16253052, 16253052, 16253052, 8126712, 8126712, 8126712, 8126712, 4063728, 4063728, 4063728, 4063728, 2032608, 2032608, 2032608, 2032608, 1017792, 1017792, 1017792, 1017792, 511872, 511872, 511872, 511872, 261888, 261888, 261888, 261888, 130560, 130560, 130560, 130560, 64512, 64512, 64512, 64512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"W", 32, {4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 3758096391UL, 3758096391UL, 4026531855UL, 4026531855UL, 4026531855UL, 4026531855UL, 4026531855UL, 4026531855UL, 4026531855UL, 4026531855UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 4160749599UL, 2013265950, 2080374846, 2080890942, 2080890942, 2080890942, 2081419326, 2081419326, 2081419326, 1008728124, 1008728124, 1010826300, 1010727996, 1010727996, 1014775356, 1014775356, 1014775356, 486022968, 486022968, 502800312, 502271928, 502271928, 534775800, 534775800, 534775800, 532677624, 264242160, 264242160, 260047344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"X", 26, {58720263, 58720263, 62914575, 62914575, 65011743, 65011743, 32505918, 32505918, 16253052, 16253052, 8126712, 8126712, 4063728, 4063728, 2032608, 2032608, 2066400, 1017792, 1036224, 511872, 524160, 261888, 261888, 130560, 130560, 64512, 64512, 64512, 130560, 130560, 261888, 261888, 524160, 511872, 1036224, 1017792, 2066400, 2032608, 4129776, 4063728, 8258040, 8126712, 16515324, 16253052, 33030270, 32505918, 66060351, 65011743, 65011743, 62914575, 62914575, 58720263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Y", 26, {58720263, 62914575, 62914575, 65011743, 65011743, 66060351, 32505918, 33030270, 16253052, 16515324, 8126712, 4063728, 4129776, 2032608, 2066400, 1017792, 1036224, 511872, 524160, 261888, 261888, 130560, 64512, 64512, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 30720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"Z", 26, {67108863, 67108863, 67108863, 67108863, 67108863, 31, 62, 62, 124, 124, 248, 248, 496, 496, 992, 992, 2016, 1984, 4032, 3968, 8064, 7936, 16128, 15872, 32256, 31744, 64512, 63488, 129024, 126976, 258048, 253952, 516096, 507904, 1032192, 1015808, 2064384, 2031616, 4128768, 4063232, 8257536, 8126464, 16515072, 16252928, 33030144, 32505856, 66060288, 65011712, 67108863, 67108863, 67108863, 67108863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"[", 13, {1023, 1023, 1023, 1023, 1023, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 1023, 1023, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"\\", 16, {57344, 57344, 57344, 61440, 61440, 61440, 61440, 63488, 63488, 63488, 31744, 31744, 31744, 15872, 15872, 15872, 7936, 7936, 7936, 7936, 3968, 3968, 3968, 1984, 1984, 1984, 992, 992, 992, 992, 496, 496, 496, 248, 248, 248, 124, 124, 124, 62, 62, 62, 62, 31, 31, 31, 15, 15, 15, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"]", 13, {1023, 1023, 1023, 1023, 1023, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1023, 1023, 1023, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"^", 16, {2016, 2016, 2016, 4080, 4080, 4080, 8184, 8184, 16380, 15996, 15996, 31806, 31806, 31806, 63519, 63519, 63519, 61455, 61455, 61455, 57351, 57351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"_", 22, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4194303, 4194303, 4194303, 4194303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"`", 14, {448, 448, 448, 480, 480, 496, 496, 504, 248, 248, 124, 124, 126, 62, 62, 31, 31, 15, 15, 15, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"a", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16383, 16383, 8191, 4095, 2303, 63, 31, 31, 31, 31, 31, 8159, 32767, 65535, 131071, 262143, 258175, 516159, 507935, 507935, 507935, 507935, 507935, 254015, 260351, 131071, 65535, 32767, 16383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"b", 19, {507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 516032, 524256, 524272, 524280, 523772, 520316, 520318, 516158, 516158, 507934, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507934, 516158, 516158, 520318, 520316, 523772, 524280, 524272, 524256, 516032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"c", 18, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4064, 8176, 16376, 32764, 65278, 63550, 129087, 127006, 127004, 122888, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 122888, 127004, 127006, 129087, 63550, 65278, 32764, 16376, 8176, 4064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"d", 19, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 8159, 16383, 32767, 65535, 130559, 127103, 258175, 254015, 254015, 245791, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 245791, 254015, 254015, 258175, 127103, 130559, 65535, 32767, 16383, 8159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"e", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8128, 16352, 32752, 65528, 130556, 127100, 258174, 254014, 254014, 245790, 507935, 507935, 524287, 524287, 524287, 524287, 524287, 507904, 507904, 245776, 254008, 254012, 258174, 127100, 130556, 65528, 32752, 16352, 8128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"f", 18, {1984, 8176, 16376, 32764, 65534, 129087, 127007, 127004, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 262136, 262136, 262136, 262136, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 253952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"g", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8159, 16383, 32767, 65535, 130559, 127103, 258175, 254015, 254015, 245791, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 245791, 254015, 254015, 258175, 127103, 130559, 65535, 32767, 16383, 8159, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 62, 62, 4222, 8188, 16376, 32752, 16352, 3968, } }, {"h", 19, {507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 524256, 524280, 524284, 524286, 522494, 516159, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"i", 10, {0, 0, 0, 0, 0, 0, 0, 0, 62, 127, 127, 127, 127, 62, 28, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"j", 18, {0, 0, 0, 0, 0, 0, 0, 0, 62, 126, 127, 127, 127, 126, 28, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 60, 124, 124, 6392, 16376, 16368, 32752, 16320, 3968, } }, {"k", 19, {507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507935, 507967, 508159, 508414, 508924, 509936, 516064, 524224, 524032, 523776, 523264, 522240, 516096, 507904, 507904, 507904, 516096, 522240, 523264, 523776, 524032, 524224, 516064, 509936, 508924, 508414, 508159, 507967, 507935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"l", 9, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"m", 26, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67096560, 67108860, 67108860, 67108862, 66715263, 65076255, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 65042463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"n", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524256, 524280, 524284, 524286, 522494, 516159, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"o", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8128, 16352, 32752, 65528, 130556, 127100, 258174, 254014, 254014, 245790, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 245790, 254014, 254014, 258174, 127100, 130556, 65528, 32752, 16352, 8128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"p", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516032, 524256, 524272, 524280, 523772, 520316, 520318, 516158, 516158, 507934, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507934, 516158, 516158, 520318, 520316, 523772, 524280, 524272, 524256, 516032, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, } }, {"q", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8159, 16383, 32767, 65535, 130559, 127103, 258175, 254015, 254015, 245791, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 245791, 254015, 254015, 258175, 127103, 130559, 65535, 32767, 16383, 8159, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, } }, {"r", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524256, 524280, 524284, 524286, 522494, 516159, 507935, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 507904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"s", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16352, 65528, 131068, 131068, 260350, 516159, 507928, 507904, 507904, 507904, 516096, 258048, 262016, 131056, 65528, 32764, 4094, 126, 63, 31, 31, 31, 49183, 516159, 260350, 131068, 131068, 65528, 16352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"t", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 524272, 524272, 524272, 524272, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31744, 31772, 32383, 16382, 16380, 8188, 2032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"u", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 516159, 260351, 262143, 131071, 65535, 16383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"v", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 507935, 254014, 254014, 254014, 127100, 127100, 127100, 63736, 63736, 63736, 32240, 32240, 32240, 32752, 16352, 16352, 16352, 8128, 8128, 8128, 3968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"w", 26, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65076255, 65076255, 65076255, 65076255, 65142303, 65142303, 65142303, 63045135, 63045135, 65273631, 65273631, 65273631, 65273631, 32755518, 33017790, 33017790, 33017790, 33017790, 16746492, 16746492, 16746492, 16746492, 8324088, 8324088, 8324088, 8324088, 8324088, 4063728, 4063728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"x", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458759, 491535, 507935, 507935, 516159, 258174, 127100, 129276, 65016, 65016, 32752, 16352, 16352, 8128, 3968, 8128, 16352, 16352, 32752, 65016, 65016, 129276, 127100, 258174, 516159, 507935, 507935, 491535, 458759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"y", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458783, 491551, 491551, 491551, 507935, 507935, 516127, 253967, 258063, 126991, 129055, 63519, 63519, 31775, 31775, 32318, 15934, 16190, 7998, 8126, 4028, 4028, 2044, 2044, 2044, 1016, 1016, 504, 504, 480, 480, 480, 480, 992, 992, 992, 992, 992, 992, 960, 1984, 1984, 1920, 3968, 3968, 7936, 16128, 130560, 130048, 129024, 126976, 253952, } }, {"z", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524287, 524287, 524287, 524287, 63, 126, 124, 252, 504, 504, 1008, 992, 2016, 4032, 3968, 8064, 16128, 15872, 32256, 64512, 64512, 129024, 126976, 258048, 516096, 524287, 524287, 524287, 524287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"{", 12, {7, 15, 31, 63, 63, 124, 124, 120, 120, 248, 248, 248, 248, 248, 248, 248, 248, 240, 224, 240, 496, 496, 1008, 992, 960, 896, 896, 960, 992, 1008, 1008, 496, 240, 240, 224, 240, 248, 248, 248, 248, 248, 248, 248, 120, 120, 124, 124, 61, 63, 31, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"|", 9, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"}", 14, {896, 960, 992, 1008, 1008, 248, 248, 120, 120, 124, 124, 124, 124, 124, 124, 124, 124, 60, 28, 60, 62, 62, 63, 31, 15, 7, 7, 15, 31, 63, 63, 62, 60, 60, 28, 60, 124, 124, 124, 124, 124, 124, 124, 120, 120, 248, 248, 752, 1008, 992, 992, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, {"~", 19, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30720, 130560, 130560, 261888, 524032, 511872, 511872, 3999, 3999, 3999, 2047, 2046, 1020, 1020, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }, }; const int NumOutlines75 = sizeof (Outlines75)/sizeof (Outlines75 [0] ); const int Height75 = sizeof (Outlines75 [0].rows)/sizeof (Outlines75 [0].rows [0] ); int FindRows75 ( const unsigned long int * * RowsPtr, int * WidthPtr) { int i, j, position; int c; RowsPtr [0] = NULL; c = getchar (); while (c == ' ') c = getchar (); position = 0; i = 0; while (c != EOF && c != '\n' && c != ' ' && i < NumOutlines75) { j = i; while (j < NumOutlines75 && ((position > 0 && (strlen (Outlines75 [j].title) <= position || memcmp (Outlines75 [i].title, Outlines75 [j].title, position) != 0) ) || Outlines75 [j].title [position] != c) ) j++; if (j >= NumOutlines75) { fprintf (stderr, "***lettertopbm1: Cannot find \""); if (position > 0) fwrite (Outlines75 [i].title, position, 1, stderr); while (c != EOF && c != '\n' && c != ' ') { fputc (c, stderr); c = getchar (); } fprintf (stderr, "\" in height %d.\n", Height75); } i = j; position++; c = getchar (); } if (i < NumOutlines75) { j = i; while (j < NumOutlines75 && ((position > 0 && (strlen (Outlines75 [j].title) < position || memcmp (Outlines75 [i].title, Outlines75 [j].title, position) != 0) ) || Outlines75 [j].title [position] != '\0') ) j++; if (j >= NumOutlines75) { fprintf (stderr, "***lettertopbm: Cannot find \""); if (position > 0) fwrite (Outlines75 [i].title, position, 1, stderr); fprintf (stderr, "\" in height %d.\n", Height75); } i = j; } if (i < NumOutlines75) { WidthPtr [0] = Outlines75 [i].width; RowsPtr [0] = Outlines75 [i].rows; } return c; } struct Letter { int bottom; int left; int right; int top; int orientation; const unsigned long int * rows; struct Letter * next; }; struct Letter * ReadPositionLines (void) { struct Letter * Letters, * * LetterPtr; const unsigned long int * rows; unsigned long int LineNum; int IsNegative, IsEmpty, FoundHeight, FoundRows; int c, across, down, orientation, width, height; Letters = NULL; LetterPtr = & Letters; LineNum = 0; c = getchar (); while (c != EOF) { LineNum++; while (c == ' ') c = getchar (); IsNegative = 0; if (c == '-') IsNegative = 1; if (c == '+' || c == '-') c = getchar (); IsEmpty = 1; across = 0; while (c >= '0' && c <= '9') { IsEmpty = 0; across = 10*across + (c - '0'); c = getchar (); } if (IsNegative) across = - across; while (c == ' ') c = getchar (); IsNegative = 0; if (c == '-') IsNegative = 1; if (c == '+' || c == '-') c = getchar (); down = 0; while (c >= '0' && c <= '9') { down = 10*down + (c - '0'); c = getchar (); } if (IsNegative) down = - down; while (c == ' ') c = getchar (); IsNegative = 0; if (c == '-') IsNegative = 1; if (c == '+' || c == '-') c = getchar (); orientation = 0; while (c >= '0' && c <= '9') { orientation = 10*orientation + (c - '0'); c = getchar (); } if (IsNegative) orientation = - orientation; while (c == ' ') c = getchar (); IsNegative = 0; if (c == '-') IsNegative = 1; if (c == '+' || c == '-') c = getchar (); FoundHeight = 0; height = 0; while (c >= '0' && c <= '9') { FoundHeight = 1; height = 10*height + (c - '0'); c = getchar (); } if (IsNegative) height = - height; FoundRows = 0; if (FoundHeight && c == ' ') { FoundRows = 1; rows = NULL; if (height == Height07) c = FindRows07 (& rows, & width); else if (height == Height12) c = FindRows12 (& rows, & width); else if (height == Height18) c = FindRows18 (& rows, & width); else if (height == Height22) c = FindRows22 (& rows, & width); else if (height == Height28) c = FindRows28 (& rows, & width); else if (height == Height37) c = FindRows37 (& rows, & width); else if (height == Height59) c = FindRows59 (& rows, & width); else if (height == Height75) c = FindRows75 (& rows, & width); else { fprintf (stderr, "***lettertopbm:"); fprintf (stderr, " height of %d", height); fprintf (stderr, " not found in line"); fprintf (stderr, " %lu.\n", LineNum); while (c == ' ') c = getchar (); while (c != EOF && c != '\n' && c != ' ') c = getchar (); } if (orientation >= 0 && orientation <= 3 && rows != NULL) { LetterPtr [0] = malloc ( sizeof (LetterPtr [0] [0] ) ); if (LetterPtr [0] == NULL) { fprintf (stderr, "***lettertopbm:"); fprintf (stderr, " Not enough"); fprintf (stderr, " memory.\n"); } else { if (orientation%2 == 0) { LetterPtr [0]->bottom = down + height - height/2; LetterPtr [0]->left = across - width/2; LetterPtr [0]->right = across + width - width/2; LetterPtr [0]->top = down - height/2; } else { LetterPtr [0]->bottom = down + width - width/2; LetterPtr [0]->left = across - height/2; LetterPtr [0]->right = across + height - height/2; LetterPtr [0]->top = down - width/2; } LetterPtr [0]->orientation = orientation; LetterPtr [0]->rows = rows; LetterPtr [0]->next = NULL; LetterPtr = & LetterPtr [0]->next; } } } while (c == ' ') c = getchar (); if (c != EOF && c != '\n' && c != '#') { fprintf (stderr, "***lettertopbm: Found improper"); fprintf (stderr, " '%c' in line", c); fprintf (stderr, " %lu.\n", LineNum); } else if (!IsEmpty && !FoundRows) { fprintf (stderr, "***lettertopbm: Incomplete data"); fprintf (stderr, " in line %lu.\n", LineNum); } while (c != EOF && c != '\n') c = getchar (); if (c != EOF) c = getchar (); } return Letters; } void WriteLetters (struct Letter * Letters, int width, int height) { struct Letter * Letter; int across, down, row, column; int OutputWeight, OutputValue, IsDark; printf ("P4\n"); printf ("%d %d\n", width, height); for (down = - height/2; down < height - height/2; down++) { OutputWeight = 128; OutputValue = 0; for (across = - width/2; across < width - width/2; across++) { IsDark = 0; Letter = Letters; while (Letter != NULL) { if ( down < Letter->bottom && across >= Letter->left && across < Letter->right && down >= Letter->top) { if (Letter->orientation == 0) { row = down - Letter->top; column = Letter->right - across - 1; } else if (Letter->orientation == 1) { row = Letter->right - across - 1; column = Letter->bottom - down - 1; } else if (Letter->orientation == 2) { row = Letter->bottom - down - 1; column = across - Letter->left; } else if (Letter->orientation == 3) { row = across - Letter->left; column = down - Letter->top; } if ((Letter->rows [row] >> column) %2 == 1) IsDark = 1; } Letter = Letter->next; } if (IsDark) OutputValue += OutputWeight; OutputWeight /= 2; if (OutputWeight == 0) { putchar (OutputValue); OutputWeight = 128; OutputValue = 0; } } if (OutputWeight < 128) putchar (OutputValue); } } void CloseLetters (struct Letter * Letters) { struct Letter * Letter, * NextLetter; Letter = Letters; while (Letter != NULL) { NextLetter = Letter->next; free (Letter); Letter = NextLetter; } } int main (int argc, char * argv [] ) { struct Letter * Letters; int i, width, height; if (argc < 2) { for (i = 0; i < NumUsageLines; i++) printf ("%s\n", UsageLines [i] ); printf ("Available heights are:"); printf (" %d,", Height07); printf (" %d,", Height12); printf (" %d,", Height18); printf (" %d,", Height22); printf (" %d,", Height28); printf (" %d,", Height37); printf (" %d,", Height59); printf (" %d.\n", Height75); } else if (argc == 3 && sscanf (argv [1], "%d", & width) == 1 && width > 0 && sscanf (argv [2], "%d", & height) == 1 && height > 0) { Letters = ReadPositionLines (); WriteLetters (Letters, width, height); CloseLetters (Letters); } else fprintf (stderr, "Usage: lettertobm (width) (height)\n"); return 0; }