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;
       }