//Freehold High School

//David Goldman

//School Code: 2100

//Advisor  : Mr. James Gill

//Intermediate 5

//ACSL Matrix Encryption

//This program decodes a matrix encryption.

 

import java.util.Scanner;

 

public class DG_INT_4 {

      public static void main(String[] args)

      {

            Scanner scan = new Scanner(System.in);

            for (int i = 1; i <=5; i++)

            {

                  System.out.println(i+". ");

                  String[] input = scan.nextLine().replaceAll("\\s", "").split(",");

                  int numOf = Integer.parseInt(input[0]);

                  int numPairs = numOf/2;

                  int[][] inverse= getInverse(parseInput(input));

                  int[] result = new int[numPairs*2];

                  for (int a = 1; a<=numPairs; a++)

                  {

                        int[][] current = {{Integer.parseInt(input[a])},{Integer.parseInt(input[a+numPairs])}};

                        int[][] translated = multiply(inverse,current);

                        result[a*2-2]=translated[0][0];

                        result[a*2-1]=translated[1][0];

                  }

                  print(result);

            }

      }

      private static int[][] multiply(int[][] arg1, int[][] arg2)

      {

            int temp;

            int[][] array = new int[arg1.length][arg2[0].length];

            for (int i = 0; i<arg1.length;i++)

                   for (int a = 0; a <arg2[0].length;a++)

                   { 

                        temp = 0;

                      for (int index = 0; index < arg1[i].length;index++)

                         temp+=arg1[i][index]*arg2[index][a];

                     array[i][a]=temp;

                   }

            return array;

      }

      private static int[][] getInverse(int[][]arg1)

      {

            int determinant = arg1[0][0]*arg1[1][1] - arg1[1][0]*arg1[0][1];

            int[][] result = new int[arg1.length][arg1[0].length];

            result[0][0] =( int) (arg1[1][1] * (1.0/determinant));

            result[1][1] = (int) (arg1[0][0] * (1.0/determinant));

            result[1][0] = (int) (arg1[1][0]*-1 * (1.0/determinant));

            result[0][1] = (int) (arg1[0][1]*-1 * (1.0/determinant));

            return result;

      }

      //Should be called parseEncodingArray

      //Could have been combined with getInverse to only use half of the code

      private static int[][] parseInput(String[] input)

      {

            int[][] decode = new int[2][2];

            int count = 0;

            for (int i =0; i < decode.length;i++)

                  for (int j = 0; j<decode[i].length;j++)

                  {

                        decode[i][j] = Integer.parseInt(input[input.length-4+count]);

                        count++;

                  }

            return decode;

      }

      private static void print(int[] result)

      {

            for (int index = 0; index< result.length; index++)

            {

                  if (result[index] >27)

                        result[index]  = result[index]% 27;

                  else if (result[index]  <1)

                        result[index]  = result[index] +27;

            }

            String message="";

            for (int i = 0; i<result.length; i++)

            {

                  if (result[i] == 27)

                        message+=" ";

                  else

                        message+= "" + (char) ('A' + result[i] -1);

            }

            System.out.println(message);

      }

}