#include <iostream>
using namespace std;
int k = 0;
class Muzyka
{
public:
Muzyka();
~Muzyka();
void drukuj_pieciolinie()
{
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < 101; j++)
{
cout << pieciolinia[i][j];
}
cout << endl;
}
}
friend void wstaw_nutki_na_pieciolinie(Muzyka& muz, string nutki[], int& j);
private:
char pieciolinia[11][101] = {
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
{ '|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|' },
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
{ '|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|' },
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
{ '|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|' },
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
{ '|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|' },
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
{ '|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|', '-', '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-','|' },
{ '|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ','|' },
};
char nutaE[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '|', '\134' },
{ ' ', ' ', '|', ' ' },
{ '-', 'o', '|', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaF[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', '|', '\134' },
{ '-', '-', '|', '-' },
{ '#', 'o', '|', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaG[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '|', '\134' },
{ ' ', ' ', '|', ' ' },
{ '#', 'o', '|', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaA[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', '|', '\134' },
{ '-', '-', '|', '-' },
{ ' ', 'o', '|', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaH[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '|', '\134' },
{ ' ', ' ', '|', ' ' },
{ '-', 'o', '|', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaC[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', '|', '\134' },
{ '-', '-', '|', '-' },
{ '#', 'o', '|', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
char nutaD[11][4] = {
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '|', '\134' },
{ ' ', ' ', '|', ' ' },
{ '#', 'o', '|', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
{ '-', '-', '-', '-' },
{ ' ', ' ', ' ', ' ' },
};
};
Muzyka::Muzyka()
{
}
Muzyka::~Muzyka()
{
}
void wstaw_nutki_na_pieciolinie(Muzyka& muz, string nutki[], int& j)
{
int buffor = 0;
int bezpiecznik = j;
for (int r = 0; r < 4; r++)
{
if (k == bezpiecznik)
{
goto koniec;
}
for (int l = 0; l < 4; l++)
{
if (k == bezpiecznik)
{
goto koniec;
}
for (int i = 0; i < 11; i++)
{
if (k == bezpiecznik)
{
goto koniec;
}
for (j = 2 + buffor; j < 6 + buffor; j++)
{
if (k == bezpiecznik)
{
goto koniec;
}
else if (nutki[k] == "E")
muz.pieciolinia[i][j] = muz.nutaE[i][j - (2 + buffor)];
else if (nutki[k] == "F")
muz.pieciolinia[i][j] = muz.nutaF[i][j - (2 + buffor)];
else if (nutki[k] == "G")
muz.pieciolinia[i][j] = muz.nutaG[i][j - (2 + buffor)];
else if (nutki[k] == "A")
muz.pieciolinia[i][j] = muz.nutaA[i][j - (2 + buffor)];
else if (nutki[k] == "H")
muz.pieciolinia[i][j] = muz.nutaH[i][j - (2 + buffor)];
else if (nutki[k] == "C")
muz.pieciolinia[i][j] = muz.nutaC[i][j - (2 + buffor)];
else if (nutki[k] == "D")
muz.pieciolinia[i][j] = muz.nutaD[i][j - (2 + buffor)];
}
}
k++;
buffor += 6;
}
buffor++;
}
koniec:;
j = bezpiecznik;
}
void wczytaj_nutki(string komp[], int licznik)
{
for (int i = 0; i < licznik; i++)
{
cin >> komp[i];
}
}
void uprosc_nutki(string komp[], int licznik)
{
for (int i = 0; i < licznik; i++)
{
for (int i = 0; i < licznik; i++)
{
komp[i] = komp[i][0];
}
}
}
int obliczanie_ilosci_pieciolin(int nut)
{
int zapotrzebowanie;
zapotrzebowanie = nut / 16;
if (nut % 16 != 0)
{
zapotrzebowanie = zapotrzebowanie + 1;
}
return zapotrzebowanie;
}
int main()
{
int liczba_nut;
cin >> liczba_nut;
string* kompozycja = new string[liczba_nut];
wczytaj_nutki(kompozycja, liczba_nut);
uprosc_nutki(kompozycja, liczba_nut);
int potrzebna_ilosc_pieciolin = obliczanie_ilosci_pieciolin(liczba_nut);
for (int i = 0; i < potrzebna_ilosc_pieciolin; i++)
{
Muzyka m1;
wstaw_nutki_na_pieciolinie(m1, kompozycja, liczba_nut);
m1.drukuj_pieciolinie();
}
delete[] kompozycja;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBrID0gMDsKY2xhc3MgTXV6eWthCnsKcHVibGljOgoJTXV6eWthKCk7Cgl+TXV6eWthKCk7Cgl2b2lkIGRydWt1al9waWVjaW9saW5pZSgpCgl7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCAxMTsgaSsrKQoJCXsKCQkJZm9yIChpbnQgaiA9IDA7IGogPCAxMDE7IGorKykKCQkJewoJCQkJY291dCA8PCBwaWVjaW9saW5pYVtpXVtqXTsKCQkJfQoJCQljb3V0IDw8IGVuZGw7CgkJfQoKCX0KCWZyaWVuZCB2b2lkIHdzdGF3X251dGtpX25hX3BpZWNpb2xpbmllKE11enlrYSYgbXV6LCBzdHJpbmcgbnV0a2lbXSwgaW50JiBqKTsKcHJpdmF0ZToKCWNoYXIgcGllY2lvbGluaWFbMTFdWzEwMV0gPSB7Cgl7ICd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JyB9LAoJeyAnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcgfSwKCXsgJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnIH0sCgl7ICd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JyB9LAoJeyAnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcgfSwKCXsgJ3wnLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJ3wnLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJ3wnLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJ3wnLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJ3wnIH0sCgl7ICd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCd8JyB9LAoJeyAnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnfCcgfSwKCXsgJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJ3wnIH0sCgl7ICd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCAnLScsICctJywgJy0nLCd8JyB9LAoJeyAnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywnfCcgfSwKCX07CgljaGFyIG51dGFFWzExXVs0XSA9IHsKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICd8JywgJ1wxMzQnIH0sCgkJeyAnICcsICcgJywgJ3wnLCAnICcgfSwKCQl7ICctJywgJ28nLCAnfCcsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgl9OwoJY2hhciBudXRhRlsxMV1bNF0gPSB7CgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJ3wnLCAnXDEzNCcgfSwKCQl7ICctJywgJy0nLCAnfCcsICctJyB9LAoJCXsgJyMnLCAnbycsICd8JywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJfTsKCWNoYXIgbnV0YUdbMTFdWzRdID0gewoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnfCcsICdcMTM0JyB9LAoJCXsgJyAnLCAnICcsICd8JywgJyAnIH0sCgkJeyAnIycsICdvJywgJ3wnLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCX07CgljaGFyIG51dGFBWzExXVs0XSA9IHsKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICd8JywgJ1wxMzQnIH0sCgkJeyAnLScsICctJywgJ3wnLCAnLScgfSwKCQl7ICcgJywgJ28nLCAnfCcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgl9OwoJY2hhciBudXRhSFsxMV1bNF0gPSB7CgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJ3wnLCAnXDEzNCcgfSwKCQl7ICcgJywgJyAnLCAnfCcsICcgJyB9LAoJCXsgJy0nLCAnbycsICd8JywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJfTsKCWNoYXIgbnV0YUNbMTFdWzRdID0gewoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnfCcsICdcMTM0JyB9LAoJCXsgJy0nLCAnLScsICd8JywgJy0nIH0sCgkJeyAnIycsICdvJywgJ3wnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCX07CgljaGFyIG51dGFEWzExXVs0XSA9IHsKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICd8JywgJ1wxMzQnIH0sCgkJeyAnICcsICcgJywgJ3wnLCAnICcgfSwKCQl7ICcjJywgJ28nLCAnfCcsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgkJeyAnLScsICctJywgJy0nLCAnLScgfSwKCQl7ICcgJywgJyAnLCAnICcsICcgJyB9LAoJCXsgJy0nLCAnLScsICctJywgJy0nIH0sCgkJeyAnICcsICcgJywgJyAnLCAnICcgfSwKCQl7ICctJywgJy0nLCAnLScsICctJyB9LAoJCXsgJyAnLCAnICcsICcgJywgJyAnIH0sCgl9Owp9OwoKTXV6eWthOjpNdXp5a2EoKQp7Cn0KCk11enlrYTo6fk11enlrYSgpCnsKfQoKdm9pZCB3c3Rhd19udXRraV9uYV9waWVjaW9saW5pZShNdXp5a2EmIG11eiwgc3RyaW5nIG51dGtpW10sIGludCYgaikKewoJaW50IGJ1ZmZvciA9IDA7CglpbnQgYmV6cGllY3puaWsgPSBqOwoJZm9yIChpbnQgciA9IDA7IHIgPCA0OyByKyspCgl7CgkJaWYgKGsgPT0gYmV6cGllY3puaWspCgkJewoJCQlnb3RvIGtvbmllYzsKCQl9CgkJZm9yIChpbnQgbCA9IDA7IGwgPCA0OyBsKyspCgkJewoJCQlpZiAoayA9PSBiZXpwaWVjem5paykKCQkJewoJCQkJZ290byBrb25pZWM7CgkJCX0KCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAxMTsgaSsrKQoJCQl7CgkJCQlpZiAoayA9PSBiZXpwaWVjem5paykKCQkJCXsKCQkJCQlnb3RvIGtvbmllYzsKCQkJCX0KCQkJCWZvciAoaiA9IDIgKyBidWZmb3I7IGogPCA2ICsgYnVmZm9yOyBqKyspCgkJCQl7CgkJCQkJaWYgKGsgPT0gYmV6cGllY3puaWspCgkJCQkJewoJCQkJCQlnb3RvIGtvbmllYzsKCQkJCQl9CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkUiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUVbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkYiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUZbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkciKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUdbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkEiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUFbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkgiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUhbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkMiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YUNbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQkJZWxzZSBpZiAobnV0a2lba10gPT0gIkQiKQoJCQkJCQltdXoucGllY2lvbGluaWFbaV1bal0gPSBtdXoubnV0YURbaV1baiAtICgyICsgYnVmZm9yKV07CgkJCQl9CgkJCX0KCQkJaysrOwoJCQlidWZmb3IgKz0gNjsKCQl9CgkJYnVmZm9yKys7Cgl9CmtvbmllYzo7CglqID0gYmV6cGllY3puaWs7Cn0Kdm9pZCB3Y3p5dGFqX251dGtpKHN0cmluZyBrb21wW10sIGludCBsaWN6bmlrKQp7Cglmb3IgKGludCBpID0gMDsgaSA8IGxpY3puaWs7IGkrKykKCXsKCQljaW4gPj4ga29tcFtpXTsKCX0KfQp2b2lkIHVwcm9zY19udXRraShzdHJpbmcga29tcFtdLCBpbnQgbGljem5paykKewoJZm9yIChpbnQgaSA9IDA7IGkgPCBsaWN6bmlrOyBpKyspCgl7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaWN6bmlrOyBpKyspCgkJewoJCQlrb21wW2ldID0ga29tcFtpXVswXTsKCQl9Cgl9Cn0KaW50IG9ibGljemFuaWVfaWxvc2NpX3BpZWNpb2xpbihpbnQgbnV0KQp7CglpbnQgemFwb3RyemVib3dhbmllOwoJemFwb3RyemVib3dhbmllID0gbnV0IC8gMTY7CgoJaWYgKG51dCAlIDE2ICE9IDApCgl7CgkJemFwb3RyemVib3dhbmllID0gemFwb3RyemVib3dhbmllICsgMTsKCX0KCXJldHVybiB6YXBvdHJ6ZWJvd2FuaWU7Cn0KCgppbnQgbWFpbigpCnsKCWludCBsaWN6YmFfbnV0OwoJY2luID4+IGxpY3piYV9udXQ7CglzdHJpbmcqIGtvbXBvenljamEgPSBuZXcgc3RyaW5nW2xpY3piYV9udXRdOwoKCXdjenl0YWpfbnV0a2koa29tcG96eWNqYSwgbGljemJhX251dCk7Cgl1cHJvc2NfbnV0a2koa29tcG96eWNqYSwgbGljemJhX251dCk7CglpbnQgcG90cnplYm5hX2lsb3NjX3BpZWNpb2xpbiA9IG9ibGljemFuaWVfaWxvc2NpX3BpZWNpb2xpbihsaWN6YmFfbnV0KTsKCglmb3IgKGludCBpID0gMDsgaSA8IHBvdHJ6ZWJuYV9pbG9zY19waWVjaW9saW47IGkrKykKCXsKCQlNdXp5a2EgbTE7CgkJd3N0YXdfbnV0a2lfbmFfcGllY2lvbGluaWUobTEsIGtvbXBvenljamEsIGxpY3piYV9udXQpOwoJCW0xLmRydWt1al9waWVjaW9saW5pZSgpOwoJfQoKCWRlbGV0ZVtdIGtvbXBvenljamE7CglyZXR1cm4gMDsKfQo=