#!/usr/bin/perl
# 
# Netscape 3.0 Hangul Print Filter - for using only "Print" menu
#
# version 2.1
#
# Choi Jun Ho(junker@jazz.snu.ac.kr)
# Narae, SNU.
# 1997/8/1
#
$version="2.1";

# hangul fonts
$hanfont_prefix="Hangul";
$hanfont="Myoungjo";
$hanfontstyle="Regular";
# for hlatex-0.95 compatibility mode only
%hanfontstyle_list=("Myoungjo", "Regular", "Gothic", "Regular" ,
                    "Graphic", "Regular",  "Gungseo", "Bold" ,
                    "Mokgak", "Bold",      "Yetgul", "Bold");
# fontlist to get optimized fontlists
# hangul: 10 fonts, (A-J) and oblique(i)
@hanfont_list=(0,0,0,0,0,0,0,0,0,0);
@hanfont_list_i=(0,0,0,0,0,0,0,0,0,0);

# hanja fonts
$hanjafont_prefix="Hanja";
$hanjafont="Myoungjo";
$nohanja=0; # in default, use hanja font
$hanjafontstyle="Normal";
# hanja: 20 fonts, 10-29(0.961), A-T(0.95), and oblique(i)
@hanjafont_list=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@hanjafont_list_i=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

# symbol fonts
$symbolfont_prefix="Symbol";
$symbolfont="Myoungjo";
$nosymbol=0; # in default, use symbol font
$symbolfontstyle="Normal";
# symbol: 4 fonts, 04-07(0.961), no symbol fonts in 0.95, and oblique(i)
@symbolfont_list=(0,0,0,0);
@symbolfont_list_i=(0,0,0,0);

# to determine the version of PS Font of HLaTeX 0.95 or 0.96
$hlatexver=96; # 0.96

# western-hangul-hanja-symbol font width ratio
$hanfont_ratio=0.8;
$symbolfont_ratio=0.96;
$hanjafont_ratio=0.96;

# slanted factor for oblique fonts(maybe only in Save-As mode)
$slanted_factor=0.167;

# command line option processing

while(1)
{
  # help
  if ($ARGV[0] =~ /^(-h$|-help|--help)/){
    showhelp($ENV{'LANG'});
  } 
  # version
  elsif ($ARGV[0] =~ /^(-V$|--version)/){
    showversion($ENV{'LANG'});
  }
  # hangul font
  elsif ($ARGV[0] =~ /^(-hfn|--hangul-font$|-hanfont)/){
    $hanfont=$ARGV[1]; 
    shift; shift;
  }
  # hanja font
  elsif ($ARGV[0] =~ /^(-hjfn|--hanja-font$|-hanjafont)/){
    $hanjafont=$ARGV[1];
    shift; shift;
  }
  # symbol font
  elsif ($ARGV[0] =~ /^(-sfn|--symbol-font$)/){
    $symbolfont=$ARGV[1];
    shift; shift;
  }
  # font style - hangul
  elsif ($ARGV[0] =~ /^(-hst|--hangul-font-style)/){
    $hanfontstyle=$ARGV[1];
    shift; shift;
  }
  # font style - hanja
  elsif ($ARGV[0] =~ /^(-hjst|--hanja-font-style)/){
    $hanjafontstyle=$ARGV[1];
    shift; shift;
  }
  # font style - symbol
  elsif ($ARGV[0] =~ /^(-sst|--symbol-font-style)/){
    $symbolfontstyle=$ARGV[1];
    shift; shift;
  }
  # use hanja or not
  elsif($ARGV[0] =~ /^(-nh|--with-no-hanja|-nohanja)/){
    $nohanja=1;
    shift;
  }
  # use symbol or not
  elsif($ARGV[0] =~ /^(-ns|--with-no-symbol)/){
    $nosymbol=1;
    shift;
  }
  elsif($ARGV[0] =~ /^(-s|--with-symbol)/){
    $nosymbol=0;
    shift;
  }
  # ps font version
  elsif($ARGV[0] =~ /^(-96|--with-hlatex-0.96-ps-fonts)/){
    $hlatexver=96;
    $nosymbol=0;
    shift;
  }
  elsif($ARGV[0] =~ /^(-95|--with-hlatex-0.95-ps-fonts)/){
    $hlatexver=95;
    $nosymbol=1;
    shift;
  }
  elsif($ARGV[0] =~ /^--/){
    shift;
    last;
  }
  else{
    last;
  }
}

# setup fontmap
@PSFontName = (
	"0", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "04", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "0", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "0", "0", "0", "0", 
	"0", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "0", "0", "0", "0", "0", "0", "0", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "0", "0", "0", "0", "0", "0", "0", "0", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "0", "0", "0", "0", "0", "0", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "05", "05", "05", "05", "05", "05", "05", 
	"05", "05", "05", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "0", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "04", "04", "04", 
	"04", "04", "04", "04", "04", "04", "04", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "06", "06", "06", "06", 
	"06", "06", "06", "06", "06", "06", "0", "0", "0", "0", 
	"0", "0", "0", "0", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "07", "07", "07", "07", "07", 
	"07", "07", "07", "07", "07", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "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", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
	"A", "A", "A", "A", "A", "A", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
	"B", "B", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
	"C", "C", "C", "C", "C", "C", "C", "C", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
	"D", "D", "D", "D", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
	"F", "F", "F", "F", "F", "F", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
	"G", "G", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
	"H", "H", "H", "H", "H", "H", "H", "H", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
	"I", "I", "I", "I", "J", "J", "J", "J", "J", "J", 
	"J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
	"J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
	"J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
	"J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"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", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"10", "10", "10", "10", "10", "10", "10", "10", "10", "10", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "11", "11", "11", "11", 
	"11", "11", "11", "11", "11", "11", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "12", "12", "12", "12", "12", "12", "12", "12", 
	"12", "12", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "13", "13", 
	"13", "13", "13", "13", "13", "13", "13", "13", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "14", "14", "14", "14", "14", "14", 
	"14", "14", "14", "14", "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", "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", "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", "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", "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", "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", "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", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "16", "16", "16", "16", 
	"16", "16", "16", "16", "16", "16", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "17", "17", "17", "17", "17", "17", "17", "17", 
	"17", "17", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "18", "18", 
	"18", "18", "18", "18", "18", "18", "18", "18", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "19", "19", "19", "19", "19", "19", 
	"19", "19", "19", "19", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"20", "20", "20", "20", "20", "20", "20", "20", "20", "20", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "21", "21", "21", "21", 
	"21", "21", "21", "21", "21", "21", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "22", "22", "22", "22", "22", "22", "22", "22", 
	"22", "22", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "23", "23", 
	"23", "23", "23", "23", "23", "23", "23", "23", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "24", "24", "24", "24", "24", "24", 
	"24", "24", "24", "24", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"25", "25", "25", "25", "25", "25", "25", "25", "25", "25", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "26", "26", "26", "26", 
	"26", "26", "26", "26", "26", "26", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "27", "27", "27", "27", "27", "27", "27", "27", 
	"27", "27", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "28", "28", 
	"28", "28", "28", "28", "28", "28", "28", "28", "29", "29", 
	"29", "29", "29", "29", "29", "29", "29", "29", "29", "29", 
	"29", "29", "29", "29", "29", "29", "29", "29", "29", "29", 
	"29", "29", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
	"0", "0", "0", "0", "0", "0", );
@PSFontIndex = (
	 0,  0,  1,  2,  3,  4,  5,  6,  7,  8, 
	 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
	19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
	29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 
	39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
	49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 
	59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 
	69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 
	79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 
	89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 
	99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 
	109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 
	119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 
	129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 
	139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 
	149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 
	159, 160, 161,  0,  0,  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, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 51, 59, 60, 
	61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 
	71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 
	81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 
	91, 92,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50,  0, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 93, 94, 95, 96, 
	97, 98, 99, 100, 101, 102,  0,  0,  0,  0, 
	 0, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112,  0,  0,  0,  0,  0,  0,  0, 113, 114, 
	115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 
	125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 
	135, 136,  0,  0,  0,  0,  0,  0,  0,  0, 
	137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 
	147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 
	157, 158, 159, 160,  0,  0,  0,  0,  0,  0, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0, 161, 162, 
	163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 
	173, 174, 175,  0, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 68, 69, 70, 71, 72, 73, 74, 
	75, 76, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 163, 164, 
	165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 
	175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 
	185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 
	195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 
	205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 
	215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 
	225, 226, 227, 228, 229, 230, 231, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 
	179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 
	189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 
	199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 
	209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 
	219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 
	229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 
	239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 
	249, 250, 251, 252, 253, 254,  0,  0,  0,  0, 
	 0,  0,  0,  0, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0, 223, 224, 225, 226, 227, 228, 229, 230, 
	231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 
	241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 
	251, 252, 253, 254, 255,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  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,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 
	72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 
	82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 
	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 
	102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
	122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
	132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
	142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
	162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
	172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
	192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
	202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 
	212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 
	222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
	232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 
	242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 
	252, 253, 254, 255,  0,  1,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 
	66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 
	76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 
	86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
	96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
	116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
	126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
	136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
	156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
	166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
	176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
	186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
	226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 
	236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
	246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 
	72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 
	82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 
	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 
	102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
	122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
	132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
	142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
	162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
	172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
	192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
	202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 
	212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 
	222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
	232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 
	242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 
	252, 253, 254, 255,  0,  1,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  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,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 
	66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 
	76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 
	86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
	96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
	116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
	126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
	136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
	156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
	166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
	176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
	186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
	226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 
	236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
	246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 
	72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 
	82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 
	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 
	102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
	122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
	132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
	142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
	162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
	172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
	192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
	202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 
	212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 
	222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
	232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 
	242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 
	252, 253, 254, 255,  0,  1,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 
	66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 
	76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 
	86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
	96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
	116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
	126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
	136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
	156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
	166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
	176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
	186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
	226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 
	236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
	246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 
	72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 
	82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 
	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 
	102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
	122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
	132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
	142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
	162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
	172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
	192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
	202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 
	212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 
	222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
	232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 
	242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 
	252, 253, 254, 255,  0,  1,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 
	66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 
	76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 
	86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
	96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
	116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
	126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
	136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
	156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
	166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
	176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
	186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
	226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 
	236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
	246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 
	32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 
	42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 
	52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 
	62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 
	72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 
	82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 
	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 
	102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 
	112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
	122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
	132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
	142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 
	162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 
	172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 
	182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 
	192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
	202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 
	212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 
	222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
	232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 
	242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 
	252, 253, 254, 255,  0,  1,  2,  3,  4,  5, 
	 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 
	26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
	46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 
	56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 
	66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 
	76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 
	86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 
	96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
	116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 
	126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 
	136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 
	156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 
	166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 
	176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 
	186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 
	196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 
	206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 
	216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 
	226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 
	236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
	246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 
	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
	10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
	20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
	30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
	40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 
	50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 
	60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 
	70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 
	80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 
	90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
	100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
	110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
	120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
	130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 
	140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
	150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 
	160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 
	170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 
	180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 
	190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 
	200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 
	210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
	220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 
	230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 
	240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 
	250, 251, 252, 253, 254, 255,  0,  1,  2,  3, 
	 4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 
	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 
	44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 
	64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
	74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 
	94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
	104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 
	114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 
	124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 
	134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
	144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 
	154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 
	164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 
	174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 
	184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
	194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 
	204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 
	214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
	224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 
	234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 
	244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 
	254, 255,  0,  1,  2,  3,  4,  5,  6,  7, 
	 8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 
	18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
	28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 
	38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
	48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
	58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 
	68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 
	78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
	88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 
	98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 
	108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
	118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 
	128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 
	138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 
	148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 
	158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
	168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 
	178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 
	198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 
	208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
	218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 
	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 
	238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 
	248, 249, 250, 251, 252, 253, 254, 255,  0,  1, 
	 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 
	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
	22, 23,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
	 0,  0,  0,  0,  0,  0, );

# Phase 1 - convert chars and get font loading information
#
while(<>){
  # read one line with "xx of"
  if (/^([0-9]+) (of)/){
    $realfontsize=$1; # get font size
    $fontname=$2; # get font name
    
    # read one more line
    $hline=<>;
    chomp($hline);
    $hline=~s/<(....+)> show/$1/;
    $nc=length($hline)/4;
    
    for($i=0; $i<$nc; $i++){
      # split chars
      $char=hex(substr($hline, $i*4, 4));

      &printhanchar($char, $realfontsize, "0");
    }

  }elsif (/^([0-9]+) f([0-7])/){
    $fontsize=$1;
    $efontsize=$1;
    $fontname=$2;

    if ($fontname>=4 && $fontname<=7){ # fixed fonts
      $efontsize=$fontsize*$hanfont_ratio;
    }  
    
    #push(@pass1,
    #   sprintf("%f $fontname", $fontsize*$hanfont_ratio));
    #}else{
    #push(@pass1, $_);
    #}
    
    # read one more line
    $hline=<>;
    #push(@pass1, $hline);
    chomp($hline);
    $sline=substr($hline, 1, length($hline)-7);
    #printf "sline: $sline\n";

    # split chars (backslash)
    $ascbuf="";
    for($ci=0; $ci<length($sline); $ci++){
      $oc=substr($sline, $ci, 1);
      if ($oc ne "\\"){
	$ascbuf=$ascbuf . $oc;
      }else{
	if ($ascbuf ne ""){
	  # flush string
	  #print "hehehe ($ascbuf) show\n";
	  push(@pass1,
	       sprintf("%f f$fontname\n", $efontsize));
	  push(@pass1,
	       "($ascbuf) show\n");
	  $ascbuf="";
	}
	
	# get next string
	$ocn=substr($sline, $ci+1, 1);
	if ($ocn !~ /\d/) {
	  #print "NOT numeric: <<$ocn>>\n";
	  push(@pass1,
	       sprintf("%f f$fontname\n", $efontsize));
	  push(@pass1,
	       "(\\$ocn) show\n");
	  $ci++;
	}else{
	  $ch1=oct(substr($sline, $ci+1, 3));
	  $ch2=oct(substr($sline, $ci+5, 3));
	  #printf "hangul: %c%c\n", $ch1, $ch2;
	  &printhanchar($ch1*256+$ch2, $fontsize, $fontname);
	  $ci=$ci+7;
	}
      }
    }
    if ($ascbuf ne ""){
      # flush string, finally
      #print "hehehe ($ascbuf) show\n";
      push(@pass1,
	   sprintf("%f f$fontname\n", $efontsize));
      push(@pass1,
	   "($ascbuf) show\n");
    }

  }else{
    push(@pass1, $_);
  }
}
  
@pass2=reverse(@pass1);
# pass 2
#

while($_=pop(@pass2)){
# search font header and print
  if (/^\/f7 /){
    # backup definition of f7
    print $_;

    #
    print "%\n% Hangul font definition(HLaTeX-0.$hlatexver mode)\n%\n";

    &printboldprologue;
    

    # Oblique Fonts Definition - Hangul
    for($i=0; $i<=10; $i++){
      if ($hanfont_list_i[$i]==1){
	if ($hlatexver==95){
	  print "/${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle_list{$hanfont}-Oblique /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle_list{$hanfont} findfont\n  [1 0 $slanted_factor 1 0 0 ] makefont definefont pop\n";
	}else{
	  print "/${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle-Oblique /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle findfont\n  [1 0 $slanted_factor 1 0 0 ] makefont definefont pop\n";
	}
      }
    }
    # Oblique Fonts Definition - hanja
    if ($nohanja!=1){
      for($i=0; $i<=19; $i++){
	if ($hanjafont_list_i[$i]==1){
	  if ($hlatexver==95){
	    if ($hanjafontstyle=="Normal"){
	      $hanjafontstyle="Regular";
	    }		
	    print "/${hanjafont_prefix}${hanjafont}".chr($i+65)."-$hanjafontstyle-Oblique /${hanjafont_prefix}${hanjafont}".chr($i+65)."-$hanjafontstyle findfont\n  [1 0 $slanted_factor 1 0 0 ] makefont definefont pop\n";
	  }else{
	    printf("/${hanjafont_prefix}${hanjafont}%02d-$hanjafontstyle-Oblique /${hanjafont_prefix}${hanjafont}%02d-$hanjafontstyle  findfont\n  [1 0 $slanted_factor 1 0 0 ] makefont definefont pop\n", $i+10); 
	  }
	}
      }
    }
    # Oblique Fonts Definition - symbol
    if ($nosymbol!=1){
      for($i=0; $i<=3; $i++){
	if ($symbolfont_list_i[$i]==1){
	  printf("/${symbolfont_prefix}${symbolfont}%02d-$symbolfontstyle-Oblique /${symbolfont_prefix}${symbolfont}%02d-$symbolfontstyle findfont\n  [1 0 $slanted_factor 1 0 0 ] makefont definefont pop\n",$i+4);
	}
      }
    }

    # 'of' definition 
    # hangul
    for($i=0; $i<=10; $i++){
      if ($hanfont_list[$i]==1){
	if ($hlatexver==95){
	  print "/of0".chr($i+65)." { /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle_list{$hanfont} findfont exch scalefont setfont } bind def\n";
	}else{
	  print "/of0".chr($i+65)." { /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle findfont exch scalefont setfont } bind def\n";
	}
      }
      if ($hanfont_list_i[$i]==1){
	if ($hlatexver==95){
	  print "/of2".chr($i+65)." { /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle_list{$hanfont}-Oblique findfont exch scalefont setfont } bind def\n";
	}else{
	  print "/of2".chr($i+65)." { /${hanfont_prefix}${hanfont}".chr($i+65)."-$hanfontstyle-Oblique findfont exch scalefont setfont } bind def\n";
	}
      }
    }
    # hanja
    if ($nohanja!=1){
      for($i=0; $i<=19; $i++){
	if ($hanjafont_list[$i]==1){
	  if ($hlatexver==95){
	    if ($hanjafontstyle=="Normal"){
	      $hanjafontstyle="Regular";
	    }		
	    printf("/of0%02d { /${hanjafont_prefix}${hanjafont}".chr($i+65)."-$hanjafontstyle findfont exch scalefont setfont } bind def\n", $i+10);
	  }else{
	    printf("/of0%02d { /${hanjafont_prefix}${hanjafont}%02d-$hanjafontstyle findfont exch scalefont setfont } bind def\n", $i+10, $i+10);
	  }
	}
	if ($hanjafont_list_i[$i]==1){
	  if ($hlatexver==95){
	    if ($hanjafontstyle=="Normal"){
	      $hanjafontstyle="Regular";
	    }		
	    printf("/of2%02d { /${hanjafont_prefix}${hanjafont}".chr($i+65)."-$hanjafontstyle-Oblique findfont exch scalefont setfont } bind def\n", $i+10);
	  }else{
	    printf("/of2%02d { /${hanjafont_prefix}${hanjafont}%02d-$hanjafontstyle-Oblique findfont exch scalefont setfont } bind def\n", $i+10, $i+10);
	  }
	}
      }
    }
    # symbol
    if ($nosymbol!=1){
      for($i=0; $i<=3; $i++){
	if ($symbolfont_list[$i]==1){
	  printf("/of0%02d { /${symbolfont_prefix}${symbolfont}%02d-$symbolfontstyle findfont exch scalefont setfont } bind def\n", $i+4, $i+4);
	}
	if ($symbolfont_list_i[$i]==1){
	  printf("/of2%02d { /${symbolfont_prefix}${symbolfont}%02d-$symbolfontstyle-Oblique findfont exch scalefont setfont } bind def\n", $i+4, $i+4);
	}
      }
    }
  }else{
    print $_;
  }
}

# subroutines

# show help message and exit
sub showhelp
{
  # select language
  if ($_[0] =~ /^ko/){
    print ": nhppf [ɼ] .ps\n";
    print "Print/Save As޴ ϴ Netscape 3.0 ѱ  \n\n";
    print "  -hfn, -hanfont, --hangul-font     ѱ Ʈ ̸ (⺻ Myoungjo)\n";  
    print "  -hjfn, -hanjafont, --hanja-font    Ʈ ̸ (⺻ Myoungjo)\n";
    print "  -sfn, --symbol-font               ɺ Ʈ ̸ (⺻ Myoungjo)\n";
    print "  -hst, --hangul-font-style         ѱ Ʈ  (⺻ Regular)\n";
    print "  -hjst, --hanja-font-style          Ʈ  (⺻ Normal)\n";
    print "  -sst, --symbol-font-style         ɺ Ʈ  (⺻ Normal)\n";
    print "  -nh, -nohanja, --with-no-hanja    ڸ ó ʽϴ.\n";
    print "  -s, --with-symbol                 ɺڸ óմϴ.\n";
    print "  -ns, --with-no-symbol             ɺڸ ó ʽϴ.\n";
    print "  -95, --with-hlatex-0.95-ps-fonts  HLaTeX-0.95 PSƮ ̸ ϴ.\n";
    print "  -96, --with-hlatex-0.96-ps-fonts  HLaTeX-0.96 PSƮ ̸ ϴ.\n";
    print "  -V, --version                       ϰ մϴ.\n\n";
    print "Է Netscape Print(μ) Ǵ Save As(ٸ ̸ )\n";
    print "  ƮũƮ ̸,   ƮũƮ\n";
    print "̸,  ǥ ɴϴ.\n";
    print "⺻ HLaTeX-0.96/97 մϴ. HLaTeX-0.95 PSƮ ġ \n";
    print "ϴ (nhppf 1.x  ) -95ɼ ־ մϴ.\n";
    print " ͸ ϴ  Ϲ  Netscape \"Print\"\n";
    print "¸ ʵ忡    Դϴ.\n\n";
    print "  ) nhppf --hangul-font Gothic | lpr\n";
  }else{
    print "Usage: nhppf [OPTIONS] netscape-output.ps\n";
    print "Netsacpe Korean Language Filter for PostScript Output of Print Menu\n";
    print "  -hfn, -hanfont, --hangul-font     set Hangul font name(Default Myoungjo)\n";  
    print "  -hjfn, -hanjafont, --hanja-font   set Hanja font name(Default Myoungjo)\n";
    print "  -sfn, --symbol-font               set Symbol font name(Default Myoungjo)\n";
    print "  -hst, --hangul-font-style         set Hangul font face(Default Regular)\n";
    print "  -hjst, --hanja-font-style         set Hanja font face(Default Normal)\n";
    print "  -sst, --symbol-font-style         set Symbol font face(Default Normal)\n";
    print "  -nh, -nohanja, --with-no-hanja    don't process Hanja\n";
    print "  -s, --with-symbol                 process KSC5601 Symbols\n";
    print "  -ns, --with-no-symbol             don't process KSC5601 Symbols\n";
    print "  -95, --with-hlatex-0.95-ps-fonts  follow the font name scheme of HLaTeX-0.95\n";
    print "  -96, --with-hlatex-0.96-ps-fonts  follow the font name scheme of HLaTeX-0.96\n";
    print "  -V, --version                     display version information and exit\n\n";
    print "The input file must be output(PS) from `Print'/`Save As' menu of Netscape,\n";
    print "and the output is stdout, in the form of PostScript.\n";
    print "It assume -96 switch in default, so give -95 option if you want to use\n";
    print "previous version of nhppf or HLaTeX-0.95 PS font is installed.\n";
    print "In general, you may set the following command to print Korean\n";
    print "in Print Menu of Netscape:\n\n";
    print "  nhppf --hangul-font Gothic | lpr\n";
  }
  exit 0;
}

sub showversion
{
  if ($_[0] =~ /^(ko|ko_KR|korean|ko_KR.euc)/){
    print "nhppf (Netscape ѱ  ) $version\n\n";
    print "б пȸ , ȣ(junker\@jazz.snu.ac.kr), 1997.\n";
    print "Ư ۱ ϴ. Ӱ ̿Ͻñ ٶϴ.\n";
  }else{
    print "nhppf (Netscape Korean Language Print Filter) $version\n\n";
    print "Choi Jun Ho(junker\@jazz.snu.ac.kr), Narae, SNU, 1997.\n";
    print "There is no special copyright. Use freely!\n";
  }
  exit 0;
}

sub getaddr
{
    local($ch1, $ch2);

    $ch1=(($_[0]/256) | 0x80);
    $ch2=(($_[0]%256) | 0x80);

    if (($ch1<0xa1 || $ch1>0xfe) || ($ch2<0xa1 || $ch2>0xfe)){
	return -1;
    }
    
    return ($ch1-0xa1)*94+($ch2-0xa1);
}

# print one hangul char
# (char-num, real-font-size, fonttype)
sub printhanchar
{
  local($ch1,$ch2,$fn,$loc,$realfontsize,$char,$isoblique,$isitalic);
  local($fontsize);

  # process arguments
  $char=$_[0];
  $realfontsize=$_[1];
  $fonttype=$_[2];
  
  # what show?
  $showcmd = "show";
  if ($fonttype % 2 == 1){ # bold!
    $showcmd = "NHPSPboldshow";
  }

  if ($fonttype % 4 == 2 || $fonttype % 4 == 3){  #italic!
    $fonttype=2;
  }else{
    $fonttype=0;
  }

  # split char
  $ch1=int($char/256);
  $ch2=$char%256;
  
  # in case of KSC5601(but range in 0x8000-0xffff)
  if ($char>=0x8000){
    $pos=$char & 0x7fff;
    $addr=&getaddr($pos);
    if ($addr != -1){
      $fn=$PSFontName[$addr];
      $loc=$PSFontIndex[$addr];
    }else{
      # out of range
      $fn="0";
      $loc=0;
    }
    
    # use hanja font or not
    if (($fn>=10 && $fn<=29) && $nohanja==1){
      $fn="0";
    }
    
    # use symbol font or not
    if (($fn>=04 && $fn<=07) && $nosymbol==1){
      $fn="0";
    }
    
    # set font size
    $fontsize=$realfontsize;
    
    # now, we will print each char
    # register in fontlist
    #   symbols
    if ($fn>=04 && $fn<=07){
      if ($fonttype==0){
	$symbolfont_list[$fn-4]=1;
      }else{
	$symbolfont_list_i[$fn-4]=1;
      }
      $fontsize*=$symbolfont_ratio;
    }
    #   hangul
    if (($fn ge "A") && ($fn le "J")){
      if ($fonttype==0){
	$hanfont_list[ord($fn)-ord('A')]=1;
      }else{
	$hanfont_list_i[ord($fn)-ord('A')]=1;
      }
    }
    #   hanja
    if ($fn>=10 && $fn<=29){
      if ($fonttype==0){
	$hanjafont_list[$fn-10]=1;
      }else{
	$hanjafont_list_i[$fn-10]=1;
      }
      $fontsize*=$hanjafont_ratio;
    }
    
    # in case of non-printable char
    if ($fn eq "0"){
      if ($nosymbol==1){
	push(@pass1,
	     sprintf("%f f4 (<0x%x>) show %% unprintable\n", $fontsize/2, $char));
      }else{
	push(@pass1,
	     sprintf("%f of005 <3e> show %% unprintable(0x%x)\n", $fontsize*$symbolfont_ratio, $char));
	$symbolfont_list[1]=1;
      }
    }else{
      # printable..
      push(@pass1,
	   sprintf("$fontsize of$fonttype$fn <%02x> $showcmd", $loc).
	   sprintf("%% %c%c\n", $ch1, $ch2));
    }
  }
}

sub printboldprologue
{
    # bold-show procedure
    print "% Bold-Show procedure\n";
    print "% from HLaTeX-0.97/dvips output\n";
    print "%\n%  Choi Jun Ho <junker\@jazz.snu.ac.kr>, 97/8/1\n";
    #
    print "/NHPSCcharwidth            1 def\n";
    print "/NHPSCObackwidth          -1 def\n";
    print "/NHPSCOadjustwidth          0.03 def\n";
    print "/NHPSCOdelta               0 def\n";
    print "/NHPSCOnextcharwidth        0.03 def\n\n";

    print "/NHPSCbackwidth     { NHPSCObackwidth NHPSCcharwidth mul } def\n/NHPSCadjustwidth   { NHPSCOadjustwidth NHPSCcharwidth mul } def\n/NHPSCdelta         { NHPSCOdelta NHPSCcharwidth mul } def\n/NHPSCnextcharwidth { NHPSCOnextcharwidth NHPSCcharwidth mul } def\n\n";

    print "/NHPSPback {\n  exch show NHPSPtail\n} def\n";
    print "/NHPSPtail {\n  dup /NHPSCdelta exch def 0 rmoveto\n} bind def\n";
    print "/NHPSPnextsetup {\n  exch show NHPSCdelta add NHPSPtail\n} bind def\n";
    print "/NHPSPadjust1{NHPSCadjustwidth NHPSPnextsetup} bind def\n";
    print "/NHPSPadjust2{NHPSCadjustwidth neg NHPSPnextsetup} bind def\n";
    print "/NHPSPadjust3{show NHPSCnextcharwidth 0 rmoveto} bind def\n";
    
    print "/NHPSPboldshowchar {\n  dup dup            % replicate to 3\n";
    print "  NHPSCbackwidth NHPSPback\n";
    print "  NHPSPadjust2                 % two\n";
    print "  NHPSPadjust3                 % three\n";
    print "} bind def\n";

    print "/NHPSPboldshow {\n";
    print "  { \n    1 string dup 0 4 -1 roll put\n";
    print "    dup stringwidth pop /NHPSCcharwidth exch def\n";
    print "    %dup stringwidth pop 10 12 string cvrs show\n";
    print "    %( ) show\n";
    print "    NHPSPboldshowchar\n";
    print "  }\n  forall\n} bind def\n";

    print "% end of procedure\n";
}
