#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
int main() {
int a[15][15];
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
a[i][j] = 0;
}
}
for (int i = 3; i < 12; i++) {
a[i][3] = 1;
a[3][i] = 1;
}
for (int i = 5; i < 10; i++) {
a[i][5] = 1;
a[5][i] = 1;
}
a[7][7] = 1;
a[2][2] = 1;
a[2][3] = 1;
a[3][2] = 1;
a[2][12] = 1;
a[3][12] = 1;
a[11][12] = 1;
char mes[1000];
char er_mes[1000];
int mode_1, mode_2, mode_3;
cin >> mes >> er_mes >> mode_1 >> mode_2 >> mode_3;
int len1 = strlen(mes);
int len2 = strlen(er_mes);
strcat(mes, er_mes);
int len = strlen(mes);
int d[300] = { 0 };
int count = 0;
char check = 'u';
int div = 0;
int rem[5] = { 0 };
int tmp = 0;
for (int j = 0; j < len; j++) {
if (check == 'u') {
if (isupper(mes[j])) {
int tmp = mes[j] - 63;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
}
else if (islower(mes[j])) {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 0;
d[count + 4] = 0;
count += 5;
int tmp = mes[j] - 95;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
check = 'l';
}
else {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 1;
d[count + 4] = 0;
count += 5;
if (mes[j] >= 48 && mes[j] <= 57) {
tmp = mes[j] - 46;
}
else if (mes[j] == 44) {
tmp = 12;
}
else if (mes[j] == 46) {
tmp = 13;
}
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 4; i++) {
d[count + i] = rem[i + 1];
}
count += 4;
check = 'd';
}
}
else if (check == 'l') {
if (isupper(mes[j])) {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 0;
count += 4;
int tmp = mes[j] - 63;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
check = 'u';
}
else if (islower(mes[j])) {
int tmp = mes[j] - 95;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
check = 'l';
}
else {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 1;
d[count + 4] = 0;
count += 5;
if (mes[j] >= 48 && mes[j] <= 57) {
tmp = mes[j] - 46;
}
else if (mes[j] == 44) {
tmp = 12;
}
else if (mes[j] == 46) {
tmp = 13;
}
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 4; i++) {
d[count + i] = rem[i + 1];
}
count += 4;
check = 'd';
}
}
else if (check == 'd') {
if (isupper(mes[j])) {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 0;
count += 4;
int tmp = mes[j] - 63;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
check = 'u';
}
else if (islower(mes[j])) {
d[count] = 1;
d[count + 1] = 1;
d[count + 2] = 1;
d[count + 3] = 0;
d[count + 4] = 0;
count += 5;
int tmp = mes[j] - 95;
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 5; i++) {
d[count + i] = rem[i];
}
count += 5;
check = 'l';
}
else {
if (mes[j] >= 48 && mes[j] <= 57) {
tmp = mes[j] - 46;
}
else if (mes[j] == 44) {
tmp = 12;
}
else if (mes[j] == 46) {
tmp = 13;
}
div = tmp;
for (int i = 0; i < 5; i++) {
rem[4 - i] = div % 2;
div /= 2;
}
for (int i = 0; i < 4; i++) {
d[count + i] = rem[i + 1];
}
count += 4;
check = 'd';
}
}
}
int count2 = 0;
for (int i = 1; i < 13; i++) {
a[i][0] = d[count2];
a[i][1] = d[count2 + 1];
count2 += 2;
}
for (int i = 0; i < 13; i++) {
a[14][i] = d[count2];
a[13][i] = d[count2 + 1];
count2 += 2;
}
for (int i = 14; i > 1; i--) {
a[i][14] = d[count2];
a[i][13] = d[count2 + 1];
count2 += 2;
}
for (int i = 14; i > 1; i--) {
if (count2 <= count) {
a[0][i] = d[count2];
a[1][i] = d[count2 + 1];
count2 += 2;
}
}
int mode_0 = len1 - 1;
div = mode_0;
if (div % 2 == 1) {
a[4][12] = 1;
}
div /= 2;
for (int i = 0; i < 5; i++) {
if (div % 2 == 1) {
a[3][10 - i] = 1;
}
div /= 2;
}
div = mode_1;
for (int i = 0; i < 6; i++) {
if (div % 2 == 1) {
a[5 + i][12] = 1;
}
div /= 2;
}
div = mode_2;
for (int i = 0; i < 7; i++) {
if (div % 2 == 1) {
a[12][4 + i] = 1;
}
div /= 2;
}
div = mode_3;
for (int i = 0; i < 7; i++) {
if (div % 2 == 1) {
a[4 + i][2] = 1;
}
div /= 2;
}
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
cout << a[i][j];
}
cout << '\n';
}
for (int i = 0; i < 300; i++){
cout << d[i] << ' ';
}
}