#include <iostream>
#include <cctype>
#include <iterator>
#include <algorithm>
#include <vector>
const std::vector<std::string> notes {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};
const std::vector<std::string> frets {"e", "B", "G", "D", "A", "E"};
std::string nth_fret(const std::string& note, int N);
std::string handle_column(const std::vector<std::string>& input, size_t& col);
int main(int argc, char *argv[])
{
std::vector<std::string> input;
for(size_t i = 0; i < 6; i++)
{
std::string line;
getline(std::cin, line);
input.push_back(line);
}
input[0][0] = 'e';
for(size_t col = 2; col < input[0].length() - 1; col++)
{
std::string note = handle_column(input, col);
if(note == "?")
continue;
std::cout << note << ' ';
}
std::cout << std::endl;
return 0;
}
std::string handle_column(const std::vector<std::string>& input, size_t& col)
{
for(size_t row = 0; row < 6; row++)
{
if(isdigit(input[row][col]))
{
int N = input[row][col] - '0';
if(col + 1 < input[0].length() - 1 && isdigit(input[row][col + 1])) //two digits
{
col++;
N *= 10;
N += input[row][col] - '0';
}
std::string note = nth_fret(frets[row] == "e" ? "E" : frets[row], N);
return note;
}
}
return "?";
}
std::string nth_fret(const std::string& note, int N)
{
size_t idx = N + std::distance(
notes.begin(),
std::find(notes.begin(), notes.end(), note)
);
idx %= notes.size();
return notes[idx];
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoJI2luY2x1ZGUgPGNjdHlwZT4KCSNpbmNsdWRlIDxpdGVyYXRvcj4KCSNpbmNsdWRlIDxhbGdvcml0aG0+CgkjaW5jbHVkZSA8dmVjdG9yPgoKCWNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBub3RlcyB7IkEiLCAiQSMiLCAiQiIsICJDIiwgIkMjIiwgIkQiLCAiRCMiLCAiRSIsICJGIiwgIkYjIiwgIkciLCAiRyMifTsKCWNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmcmV0cyB7ImUiLCAiQiIsICJHIiwgIkQiLCAiQSIsICJFIn07CgoJc3RkOjpzdHJpbmcgbnRoX2ZyZXQoY29uc3Qgc3RkOjpzdHJpbmcmIG5vdGUsIGludCBOKTsKCXN0ZDo6c3RyaW5nIGhhbmRsZV9jb2x1bW4oY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBpbnB1dCwgc2l6ZV90JiBjb2wpOwoKCWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCgl7CgkJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGlucHV0OwoJCWZvcihzaXplX3QgaSA9IDA7IGkgPCA2OyBpKyspCgkJewoJCQlzdGQ6OnN0cmluZyBsaW5lOwoJCQlnZXRsaW5lKHN0ZDo6Y2luLCBsaW5lKTsKCQkJaW5wdXQucHVzaF9iYWNrKGxpbmUpOwoJCX0KCQlpbnB1dFswXVswXSA9ICdlJzsKCQlmb3Ioc2l6ZV90IGNvbCA9IDI7IGNvbCA8IGlucHV0WzBdLmxlbmd0aCgpIC0gMTsgY29sKyspCgkJewoJCQlzdGQ6OnN0cmluZyBub3RlID0gaGFuZGxlX2NvbHVtbihpbnB1dCwgY29sKTsKCQkJaWYobm90ZSA9PSAiPyIpCgkJCQljb250aW51ZTsKCQkJc3RkOjpjb3V0IDw8IG5vdGUgPDwgJyAnOwoJCX0KCQlzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJCXJldHVybiAwOwoJfQoKCXN0ZDo6c3RyaW5nIGhhbmRsZV9jb2x1bW4oY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBpbnB1dCwgc2l6ZV90JiBjb2wpCgl7CgkJZm9yKHNpemVfdCByb3cgPSAwOyByb3cgPCA2OyByb3crKykKCQl7CgkJCWlmKGlzZGlnaXQoaW5wdXRbcm93XVtjb2xdKSkKCQkJewoJCQkJaW50IE4gPSBpbnB1dFtyb3ddW2NvbF0gLSAnMCc7CgkJCQlpZihjb2wgKyAxIDwgaW5wdXRbMF0ubGVuZ3RoKCkgLSAxICYmIGlzZGlnaXQoaW5wdXRbcm93XVtjb2wgKyAxXSkpIC8vdHdvIGRpZ2l0cwoJCQkJewoJCQkJCWNvbCsrOwoJCQkJCU4gKj0gMTA7CgkJCQkJTiArPSBpbnB1dFtyb3ddW2NvbF0gLSAnMCc7CgkJCQl9CgkJCQlzdGQ6OnN0cmluZyBub3RlID0gbnRoX2ZyZXQoZnJldHNbcm93XSA9PSAiZSIgPyAiRSIgOiBmcmV0c1tyb3ddLCBOKTsKCQkJCXJldHVybiBub3RlOwoJCQl9CgkJfQoJCXJldHVybiAiPyI7Cgl9CgoJc3RkOjpzdHJpbmcgbnRoX2ZyZXQoY29uc3Qgc3RkOjpzdHJpbmcmIG5vdGUsIGludCBOKQoJewoJCXNpemVfdCBpZHggPSBOICsgc3RkOjpkaXN0YW5jZSgKCQkJbm90ZXMuYmVnaW4oKSwKCQkJc3RkOjpmaW5kKG5vdGVzLmJlZ2luKCksIG5vdGVzLmVuZCgpLCBub3RlKQoJCSk7CgkJaWR4ICU9IG5vdGVzLnNpemUoKTsKCQlyZXR1cm4gbm90ZXNbaWR4XTsKCX0=
RXwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwKCUJ8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18CglHfC03LTctLS03LS0tLS0tLS0tfC03LTctLS03LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS03LS0tfC0tLS0tLS0tLS0tLS0tLS0tfAoJRHwtLS0tLS0tLS05LS0tNy0tLXwtLS0tLS0tLS05LS0tNy0tLXwtNi02LS0tNi05LS0tLS0tLXwtNi02LS0tNi05LS0xMi0tLXwKCUF8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18CglFfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfA==
E|-----------------|-----------------|-----------------|-----------------|
B|-----------------|-----------------|-----------------|-----------------|
G|-7-7---7---------|-7-7---7---------|-------------7---|-----------------|
D|---------9---7---|---------9---7---|-6-6---6-9-------|-6-6---6-9--12---|
A|-----------------|-----------------|-----------------|-----------------|
E|-----------------|-----------------|-----------------|-----------------|