/*Bruno Horvat

Prva gimnazija Varazdin

Varazdin, Croatia

 

ACSL 2010-2011

Junior

Contest #4

Problem: "Matrix Encryption"*/

 

#include<cstdio>

#include<cstring>

#include<algorithm>

#include<iostream>

 

      using namespace std;

 

     

      int trazi (int a) {

          if (a==1) return 'A';

          if (a==2) return 'B';

          if (a==3) return 'C';

          if (a==4) return 'D';

          if (a==5) return 'E';

          if (a==6) return 'F';

          if (a==7) return 'G';

          if (a==8) return 'H';

          if (a==9) return 'I';

          if (a==10) return 'J';

          if (a==11) return 'K';

          if (a==12) return 'L';

          if (a==13) return 'M';

          if (a==14) return 'N';

          if (a==15) return 'O';

          if (a==16) return 'P';

          if (a==17) return 'Q';

          if (a==18) return 'R';

          if (a==19) return 'S';

          if (a==20) return 'T';

          if (a==21) return 'U';

          if (a==22) return 'V';

          if (a==23) return 'W';

          if (a==24) return 'X';

          if (a==25) return 'Y';

          if (a==26) return 'Z';

          if (a==27) return ' ';

         

          }

     

     

                int main () {

                    

                     for (int sk=1; sk<=5; sk++) {

                                                 

                    char a1[10000], a[10000], kraj[1000];

                    int br[1000], mat[5], nov[1000], broj=0, tito=0, pot=1, prol=4, raz=0, isp=0, od=0;

                   

                    cin.getline(a1, 10000);

                   

                    broj=strlen(a1);

                    for (int i=0; i<broj; ++i) a[i+1]=a1[i];

                   

                    for (int i=broj; prol>0; i-- && od++) {if (a[i-1]==' ') {if (isp==1) {raz=a[i]-48;

                                                                             raz*=pot;

                                                                             tito+=raz;

                                                                             mat[prol]=tito;

                                                                             pot=1;

                                                                             isp=0;

                                                                             i--;

                                                                             prol--;

                                                                             od++;

                                                                             tito=0;

                                                                             } else {

                                                                mat[prol]=a[i]-48;

                                                                prol--;

                                                                od++;

                                                                i--;}} else {raz=a[i]-48;

                                                                            raz*=pot;

                                                                            tito+=raz;

                                                                            pot*=10;

                                                                            isp=1;}

                   

                                              }

                                             

                                             

                                              broj-=od;                                             

                   

                    for (int i=1; i<=broj; ++i) if (a[i]==' ') br[i]=27; else br[i]=a[i]-64; 

                   

                    if (broj%2!=0) {br[broj+1]=27;

                                         broj++;}

                                        

                   

                    for (int i=1; i<=broj; i+=2) {nov[i]=br[i]*mat[1]+br[i+1]*mat[2];

                        nov[i+1]=br[i]*mat[3]+br[i+1]*mat[4];}

                                       

                        for (int i=1; i<=broj; i++) if (nov[i]<=27) kraj[i]=trazi(nov[i]); else kraj[i]=trazi(nov[i]%27);

                        for (int i=1; i<=broj; i++) printf ("%c", kraj[i]);

                       

                       

                        printf ("\n");

 

                                      }

                                      

                   

                    system ("pause");

                    return 0;}