typedef int SCOREMATRIX[25][25];

char alphabet[] = {"ARNDCQEGHILKMFPSTWYVBZX*-"};

double fdayhoff[20] = {
	0.087, 0.041, 0.040, 0.047, 0.033, 0.038, 0.050, 0.088, 0.034, 0.037,
	0.085, 0.081, 0.015, 0.040, 0.051, 0.070, 0.058, 0.010, 0.030, 0.065};

double fblast[20] = {
	0.081, 0.057, 0.045, 0.054, 0.015, 0.039, 0.061, 0.068, 0.022, 0.057,
	0.093, 0.056, 0.025, 0.040, 0.049, 0.068, 0.058, 0.013, 0.032, 0.067 };


int mdm[400] = {
9867,  2,  9, 10,  3,  8, 17, 21,  2,  6,  4,  2,  6,  2, 22, 35, 32, 0,  2, 18,
 1, 9913,  1,  0,  1, 10,  0,  0, 10,  3,  1, 19,  4,  1,  4,  6,  1, 8,  0,  1,
 4,  1, 9822, 36,  0,  4,  6,  6, 21,  3,  1, 13,  0,  1,  2, 20,  9, 1,  4,  1,
 6,  0, 42, 9859,  0,  6, 53,  6,  4,  1,  0,  3,  0,  0,  1,  5,  3, 0,  0,  1,
 1,  1,  0,  0, 9973,  0,  0,  0,  1,  1,  0,  0,  0,  0,  1,  5,  1, 0,  3,  2,
 3,  9,  4,  5,  0, 9876, 27,  1, 23,  1,  3,  6,  4,  0,  6,  2,  2, 0,  0,  1,
10,  0,  7, 56,  0, 35, 9865,  4,  2,  3,  1,  4,  1,  0,  3,  4,  2, 0,  1,  2,
21,  1, 12, 11,  1,  3,  7, 9935,  1,  0,  1,  2,  1,  1,  3, 21,  3, 0,  0,  5,
 1,  8, 18,  3,  1, 20,  1,  0, 9912,  0,  1,  1,  0,  2,  3,  1,  1, 1,  4,  1,
 2,  2,  3,  1,  2,  1,  2,  0,  0, 9872,  9,  2, 12,  7,  0,  1,  7, 0,  1, 33,
 3,  1,  3,  0,  0,  6,  1,  1,  4, 22, 9947,  2, 45, 13,  3,  1,  3, 4,  2, 15,
 2, 37, 25,  6,  0, 12,  7,  2,  2,  4,  1, 9926, 20,  0,  3,  8, 11, 0,  1,  1,
 1,  1,  0,  0,  0,  2,  0,  0,  0,  5,  8,  4, 9874,  1,  0,  1,  2, 0,  0,  4,
 1,  1,  1,  0,  0,  0,  0,  1,  2,  8,  6,  0,  4, 9946,  0,  2,  1, 3, 28,  0,
13,  5,  2,  1,  1,  8,  3,  2,  5,  1,  2,  2,  1,  1, 9926, 12,  4, 0,  0,  2,
28, 11, 34,  7, 11,  4,  6, 16,  2,  2,  1,  7,  4,  3, 17, 9840, 38, 5,  2,  2,
22,  2, 13,  4,  1,  3,  2,  2,  1, 11,  2,  8,  6,  1,  5, 32, 9871, 0,  2,  9,
 0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0, 9976, 1,  0,
 1,  0,  3,  0,  3,  0,  1,  0,  4,  1,  1,  0,  0, 21,  0,  1,  1, 2, 9945,  1,
13,  2,  1,  1,  3,  2,  2,  3,  3, 57, 11,  1, 17,  1,  3,  2, 10, 0, 2, 9901};

/*
# This matrix was produced by "pam" Version 1.0.2 [18-Sep-91]
#
# PAM 60 substitution matrix, scale = ln(2)/2 = 0.346574
#
# Lowest score = -12, Highest score = 13
*/

double lambda60 = 0.346574;
SCOREMATRIX pam60 = {
   5,  -5,  -2,  -2,  -5,  -3,  -1,   0,  -5,  -3,  -4,  -5,  -3,  -6,   0,   1,   1, -10,  -6,  -1,  -1,  -1,   0, -12, -999999,
  -5,   8,  -3,  -6,  -6,   0,  -6,  -7,   0,  -4,  -6,   2,  -2,  -7,  -2,  -2,  -4,   0,  -8,  -5,  -3,  -1,   0, -12, -999999,
  -2,  -3,   6,   2,  -7,  -2,   0,  -1,   1,  -4,  -5,   0,  -6,  -6,  -4,   1,  -1,  -6,  -3,  -5,   6,   0,   0, -12, -999999,
  -2,  -6,   2,   7, -10,  -1,   3,  -2,  -2,  -5,  -9,  -2,  -7, -11,  -5,  -2,  -3, -11,  -8,  -6,   6,   3,   0, -12, -999999,
  -5,  -6,  -7, -10,   9, -10, -10,  -7,  -6,  -4, -11, -10, -10,  -9,  -6,  -1,  -5, -12,  -2,  -4,  -8,  -9,   0, -12, -999999,
  -3,   0,  -2,  -1, -10,   7,   2,  -5,   2,  -5,  -3,  -1,  -2,  -9,  -1,  -3,  -4,  -9,  -8,  -5,   0,   7,   0, -12, -999999,
  -1,  -6,   0,   3, -10,   2,   7,  -2,  -3,  -4,  -7,  -3,  -5, -10,  -3,  -2,  -4, -12,  -7,  -4,   3,   6,   0, -12, -999999,
   0,  -7,  -1,  -2,  -7,  -5,  -2,   6,  -6,  -7,  -8,  -5,  -6,  -7,  -4,   0,  -3, -11, -10,  -4,  -1,  -2,   0, -12, -999999,
  -5,   0,   1,  -2,  -6,   2,  -3,  -6,   8,  -6,  -4,  -4,  -7,  -4,  -2,  -4,  -5,  -5,  -2,  -5,   1,   1,   0, -12, -999999,
  -3,  -4,  -4,  -5,  -4,  -5,  -4,  -7,  -6,   7,   0,  -4,   1,  -1,  -6,  -4,  -1, -10,  -4,   3,  -3,  -4,   0, -12, -999999,
  -4,  -6,  -5,  -9, -11,  -3,  -7,  -8,  -4,   0,   6,  -6,   2,  -1,  -5,  -6,  -5,  -4,  -5,  -1,  -6,  -4,   0, -12, -999999,
  -5,   2,   0,  -2, -10,  -1,  -3,  -5,  -4,  -4,  -6,   6,   0, -10,  -4,  -2,  -2,  -8,  -7,  -6,   0,  -1,   0, -12, -999999,
  -3,  -2,  -6,  -7, -10,  -2,  -5,  -6,  -7,   1,   2,   0,  10,  -2,  -6,  -4,  -2,  -9,  -7,   0,  -5,  -2,   0, -12, -999999,
  -6,  -7,  -6, -11,  -9,  -9, -10,  -7,  -4,  -1,  -1, -10,  -2,   8,  -7,  -5,  -6,  -3,   3,  -5,  -7,  -9,   0, -12, -999999,
   0,  -2,  -4,  -5,  -6,  -1,  -3,  -4,  -2,  -6,  -5,  -4,  -6,  -7,   7,   0,  -2, -10, -10,  -4,  -3,  -1,   0, -12, -999999,
   1,  -2,   1,  -2,  -1,  -3,  -2,   0,  -4,  -4,  -6,  -2,  -4,  -5,   0,   5,   1,  -4,  -5,  -4,   1,  -2,   0, -12, -999999,
   1,  -4,  -1,  -3,  -5,  -4,  -4,  -3,  -5,  -1,  -5,  -2,  -2,  -6,  -2,   1,   6,  -9,  -5,  -1,   0,  -3,   0, -12, -999999,
 -10,   0,  -6, -11, -12,  -9, -12, -11,  -5, -10,  -4,  -8,  -9,  -3, -10,  -4,  -9,  13,  -3, -11,  -7,  -9,   0, -12, -999999,
  -6,  -8,  -3,  -8,  -2,  -8,  -7, -10,  -2,  -4,  -5,  -7,  -7,   3, -10,  -5,  -5,  -3,   9,  -5,  -4,  -6,   0, -12, -999999,
  -1,  -5,  -5,  -6,  -4,  -5,  -4,  -4,  -5,   3,  -1,  -6,   0,  -5,  -4,  -4,  -1, -11,  -5,   6,  -4,  -4,   0, -12, -999999,
  -1,  -3,   6,   6,  -8,   0,   3,  -1,   1,  -3,  -6,   0,  -5,  -7,  -3,   1,   0,  -7,  -4,  -4,   7,   3,   0, -12, -999999,
  -1,  -1,   0,   3,  -9,   7,   6,  -2,   1,  -4,  -4,  -1,  -2,  -9,  -1,  -2,  -3,  -9,  -6,  -4,   3,   7,   0, -12, -999999,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, -12, -999999,
 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,   1, -999999,
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, 
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999 };


/*
# This matrix was produced by "pam" Version 1.0.2, [18-Sep-91]
#
# PAM 120, substitution matrix, scale = ln(2)/2, = 0.346574
#
# Lowest score = -8, Highest score = 12
*/

double lambda120 = 0.346574;
SCOREMATRIX pam120 = {
  3, -3, -1,  0, -3, -1,  0,  1, -3, -1, -3, -2, -2, -4,  1,  1,  1, -7, -4,  0,  1,  0,  0, -8, -999999,
 -3,  6, -1, -3, -4,  1, -3, -4,  1, -2, -4,  2, -1, -5, -1, -1, -2,  1, -5, -3, -1,  0,  0, -8, -999999,
 -1, -1,  4,  2, -5,  0,  1,  0,  2, -2, -4,  1, -3, -4, -2,  1,  0, -4, -2, -3,  4,  1,  0, -8, -999999,
  0, -3,  2,  5, -7,  1,  3,  0,  0, -3, -5, -1, -4, -7, -3,  0, -1, -8, -5, -3,  5,  3,  0, -8, -999999,
 -3, -4, -5, -7,  9, -7, -7, -4, -4, -3, -7, -7, -6, -6, -4,  0, -3, -8, -1, -3, -4, -6,  0, -8, -999999,
 -1,  1,  0,  1, -7,  6,  2, -3,  3, -3, -2,  0, -1, -6,  0, -2, -2, -6, -5, -3,  1,  5,  0, -8, -999999,
  0, -3,  1,  3, -7,  2,  5, -1, -1, -3, -4, -1, -3, -7, -2, -1, -2, -8, -5, -3,  3,  5,  0, -8, -999999,
  1, -4,  0,  0, -4, -3, -1,  5, -4, -4, -5, -3, -4, -5, -2,  1, -1, -8, -6, -2,  1, -1,  0, -8, -999999,
 -3,  1,  2,  0, -4,  3, -1, -4,  7, -4, -3, -2, -4, -3, -1, -2, -3, -3, -1, -3,  2,  2,  0, -8, -999999,
 -1, -2, -2, -3, -3, -3, -3, -4, -4,  6,  1, -3,  1,  0, -3, -2,  0, -6, -2,  3, -2, -2,  0, -8, -999999,
 -3, -4, -4, -5, -7, -2, -4, -5, -3,  1,  5, -4,  3,  0, -3, -4, -3, -3, -2,  1, -3, -2,  0, -8, -999999,
 -2,  2,  1, -1, -7,  0, -1, -3, -2, -3, -4,  5,  0, -7, -2, -1, -1, -5, -5, -4,  1,  0,  0, -8, -999999,
 -2, -1, -3, -4, -6, -1, -3, -4, -4,  1,  3,  0,  8, -1, -3, -2, -1, -6, -4,  1, -3, -1,  0, -8, -999999,
 -4, -5, -4, -7, -6, -6, -7, -5, -3,  0,  0, -7, -1,  8, -5, -3, -4, -1,  4, -3, -4, -5,  0, -8, -999999,
  1, -1, -2, -3, -4,  0, -2, -2, -1, -3, -3, -2, -3, -5,  6,  1, -1, -7, -6, -2, -1,  0,  0, -8, -999999,
  1, -1,  1,  0,  0, -2, -1,  1, -2, -2, -4, -1, -2, -3,  1,  3,  2, -2, -3, -2,  1,  0,  0, -8, -999999,
  1, -2,  0, -1, -3, -2, -2, -1, -3,  0, -3, -1, -1, -4, -1,  2,  4, -6, -3,  0,  1, -1,  0, -8, -999999,
 -7,  1, -4, -8, -8, -6, -8, -8, -3, -6, -3, -5, -6, -1, -7, -2, -6, 12, -2, -8, -5, -6,  0, -8, -999999,
 -4, -5, -2, -5, -1, -5, -5, -6, -1, -2, -2, -5, -4,  4, -6, -3, -3, -2,  8, -3, -2, -4,  0, -8, -999999,
  0, -3, -3, -3, -3, -3, -3, -2, -3,  3,  1, -4,  1, -3, -2, -2,  0, -8, -3,  5, -2, -2,  0, -8, -999999,
  1, -1,  4,  5, -4,  1,  3,  1,  2, -2, -3,  1, -3, -4, -1,  1,  1, -5, -2, -2,  6,  4,  0, -8, -999999,
  0,  0,  1,  3, -6,  5,  5, -1,  2, -2, -2,  0, -1, -5,  0,  0, -1, -6, -4, -2,  4,  6,  0, -8, -999999,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, -8, -999999,
 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,  1, -999999,
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, 
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999 };

/*
# This matrix was produced by "pam" Version 1.0.2, [18-Sep-91]
#
# PAM 250, substitution matrix, scale = ln(2)/3, = 0.231049
#
# Lowest score = -8, Highest score = 17
*/

double lambda250 = 0.231049;
SCOREMATRIX pam250 = {
  2, -2,  0,  0, -2,  0,  0,  1, -1, -1, -2, -1, -1, -3,  1,  1,  1, -6, -3,  0,  2,  1,  0, -8, -999999,
 -2,  6,  0, -1, -4,  1, -1, -3,  2, -2, -3,  3,  0, -4,  0,  0, -1,  2, -4, -2,  1,  2,  0, -8, -999999,
  0,  0,  2,  2, -4,  1,  1,  0,  2, -2, -3,  1, -2, -3,  0,  1,  0, -4, -2, -2,  4,  3,  0, -8, -999999,
  0, -1,  2,  4, -5,  2,  3,  1,  1, -2, -4,  0, -3, -6, -1,  0,  0, -7, -4, -2,  5,  4,  0, -8, -999999,
 -2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3,  0, -2, -8,  0, -2, -3, -4,  0, -8, -999999,
  0,  1,  1,  2, -5,  4,  2, -1,  3, -2, -2,  1, -1, -5,  0, -1, -1, -5, -4, -2,  3,  5,  0, -8, -999999,
  0, -1,  1,  3, -5,  2,  4,  0,  1, -2, -3,  0, -2, -5, -1,  0,  0, -7, -4, -2,  4,  5,  0, -8, -999999,
  1, -3,  0,  1, -3, -1,  0,  5, -2, -3, -4, -2, -3, -5,  0,  1,  0, -7, -5, -1,  2,  1,  0, -8, -999999,
 -1,  2,  2,  1, -3,  3,  1, -2,  6, -2, -2,  0, -2, -2,  0, -1, -1, -3,  0, -2,  3,  3,  0, -8, -999999,
 -1, -2, -2, -2, -2, -2, -2, -3, -2,  5,  2, -2,  2,  1, -2, -1,  0, -5, -1,  4, -1, -1,  0, -8, -999999,
 -2, -3, -3, -4, -6, -2, -3, -4, -2,  2,  6, -3,  4,  2, -3, -3, -2, -2, -1,  2, -2, -1,  0, -8, -999999,
 -1,  3,  1,  0, -5,  1,  0, -2,  0, -2, -3,  5,  0, -5, -1,  0,  0, -3, -4, -2,  2,  2,  0, -8, -999999,
 -1,  0, -2, -3, -5, -1, -2, -3, -2,  2,  4,  0,  6,  0, -2, -2, -1, -4, -2,  2, -1,  0,  0, -8, -999999,
 -3, -4, -3, -6, -4, -5, -5, -5, -2,  1,  2, -5,  0,  9, -5, -3, -3,  0,  7, -1, -3, -4,  0, -8, -999999,
  1,  0,  0, -1, -3,  0, -1,  0,  0, -2, -3, -1, -2, -5,  6,  1,  0, -6, -5, -1,  1,  1,  0, -8, -999999,
  1,  0,  1,  0,  0, -1,  0,  1, -1, -1, -3,  0, -2, -3,  1,  2,  1, -2, -3, -1,  2,  1,  0, -8, -999999,
  1, -1,  0,  0, -2, -1,  0,  0, -1,  0, -2,  0, -1, -3,  0,  1,  3, -5, -3,  0,  2,  1,  0, -8, -999999,
 -6,  2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4,  0, -6, -2, -5, 17,  0, -6, -4, -4,  0, -8, -999999,
 -3, -4, -2, -4,  0, -4, -4, -5,  0, -1, -1, -4, -2,  7, -5, -3, -3,  0, 10, -2, -2, -3,  0, -8, -999999,
  0, -2, -2, -2, -2, -2, -2, -1, -2,  4,  2, -2,  2, -1, -1, -1,  0, -6, -2,  4,  0,  0,  0, -8, -999999,
  2,  1,  4,  5, -3,  3,  4,  2,  3, -1, -2,  2, -1, -3,  1,  2,  2, -4, -2,  0,  6,  5,  0, -8, -999999,
  1,  2,  3,  4, -4,  5,  5,  1,  3, -1, -1,  2,  0, -4,  1,  1,  1, -4, -3,  0,  5,  6,  0, -8, -999999,
  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, -8, -999999,
 -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8,  1, -999999,
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, 
 -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999, -999999 };

