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