#include <stdio.h>
#include <string.h>
int main() {
//inicio do calculo do dia da pascoa
int x, y, a, b, c, d, e, ano, dia, ab, diasemana, mes, cont, cont2 =0, cont3=0,cont4=0,cont5=0,cont6=0,cont7=0,cont8=0,cont9=0,cont10=0,cont11=0;
x=24;
y=5;
a = ano%19;
b= ano%4;
c = ano%7;
d = (19*a+x)%30;
e = (2*b+4*c+6*d+y)%7;
if (d+e>9)
{
dia =d+e-9;
mes = 4;
}
else{
dia=d+e+22;
mes=3;
}
//fim do calculo do dia da pascoa
//inicio do calculo para ver se o ano e bissesto
y=ano;
if(ano%100==0){ano=ano/100;}
if (ano%4==0){ab=1;}
else{ab=0;}
//fim o calculo para ver se o ano e bissesto
//inicio do calculo para encontrar o dia 1 de janeiro
if (mes==3)
diasemana=8-(dia+ab+28+31)%7;
else if (mes==4)
diasemana=8-(dia+ab+31+28+31)%7;
if (diasemana >6) diasemana -=7;
//fim do calculo para encontrar o dia 1 de janeiro
//inicio do processo de saida
printf("Calendario do ano %d\n", ano
); for (int semana = 0; semana < 12 ; semana++){
printf("|-----------------------------|\n"); if (semana == 0)
if (semana == 1)
if (semana == 2)
if (semana == 3)
if (semana == 4)
if (semana == 5)
if (semana == 6)
if (semana == 7)
if (semana == 8)
if (semana == 9)
if (semana == 10)
if (semana == 11)
printf("|-----------------------------|\n"); printf("| dom seg ter qua qui sex sab |\n"); for ( int ndiames = 0, adia =1; ndiames < 42;ndiames++){
for (int ndia =0; ndia <7 ;ndiames++, ndia++){
/*janeiro*/ if (semana == 0){
if ( (ndiames < diasemana) || (adia > 31) ){
if(adia>31){
cont++;
}
}else{
if ( adia <10)
else
adia++;
}
}
/*fevereiro*/ if (semana == 1){
if(cont >= 7){
cont-=7;
}
if (cont > 0){
if ((ndiames < 7 - cont) || (adia > 28+ab)){
if (adia > 28+ab)
cont2++;
}else{
if ( adia <10){
adia++;
}else{
adia++;
}
}
}else{
if ((ndiames < cont) || (adia > 28+ab)){
}else{
if ( adia <10)
else
if (adia > 28+ab){
cont2++;
}
adia++;
}
}
}
/*marco*/if (semana == 2){
if(cont2 >= 7){
cont2-=7;
}
if (cont2 > 0){
if ((ndiames < 7 - cont2) || (adia > 31)){
if (adia > 31)
cont3++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont2) || (adia > 31)){
if (adia > 31)
cont3++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*abril*/if (semana == 3){
if(cont3 >= 7){
cont3-=7;
}
if (cont3 > 0){
if ((ndiames < 7 - cont3) || (adia > 30)){
if (adia > 30)
cont4++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont3) || (adia > 30)){
if (adia > 30)
cont4++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*maio*/if (semana == 4){
if(cont4 >= 7){
cont4-=7;
}
if (cont4 > 0){
if ((ndiames < 7 - cont4) || (adia > 31)){
if (adia > 31)
cont5++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont4) || (adia > 31)){
if (adia > 31)
cont5++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*junho*/if (semana == 5){
if(cont5 >= 7){
cont5-=7;
}
if (cont5 > 0){
if ((ndiames < 7 - cont5) || (adia > 30)){
if (adia > 30)
cont6++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont5) || (adia > 30)){
if (adia > 30)
cont6++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*julho*/if (semana == 6){
if(cont6 >= 7){
cont6-=7;
}
if (cont6 > 0){
if ((ndiames < 7 - cont6) || (adia > 31)){
if (adia > 31)
cont7++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont6) || (adia > 31)){
if (adia > 31)
cont7++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*agosto*/if (semana == 7){
if(cont7 >= 7){
cont7-=7;
}
if (cont7 > 0){
if ((ndiames < 7 - cont7) || (adia > 31)){
if (adia > 31)
cont8++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont7) || (adia > 31)){
if (adia > 31)
cont8++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*setembro*/ if (semana == 8){
if(cont8 >= 7){
cont8-=7;
}
if (cont8 > 0){
if ((ndiames < 7 - cont8) || (adia > 30)){
if (adia > 30)
cont9++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont8) || (adia > 30)){
if (adia > 30)
cont9++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*outubro*/ if (semana == 9){
if(cont9 >= 7){
cont9-=7;
}
if (cont9 > 0){
if ((ndiames < 7 - cont9) || (adia > 31)){
if (adia > 31)
cont10++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont9) || (adia > 31)){
if (adia > 31)
cont10++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*novembro*/ if (semana == 10){
if(cont10 >= 7){
cont10-=7;
}
if (cont10 > 0){
if ((ndiames < 7 - cont10) || (adia > 30)){
if (adia > 30)
cont11++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont10) || (adia > 30)){
if (adia > 30)
cont11++;
}else{
if ( adia <10)
else
adia++;
}
}
}
/*dezembro*/ if (semana == 11){
if(cont11 >= 7){
cont11-=7;
}
if (cont11 > 0){
if ((ndiames < 7 - cont11) || (adia > 31)){
if (adia > 31)
cont11++;
}else{
if ( adia <10)
else
adia++;
}
}else{
if ((ndiames < cont11) || (adia > 31)){
}else{
if ( adia <10)
else
adia++;
}
}
}
}
}
}
printf("|-----------------------------|\n"); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KaW50IG1haW4oKSB7Ci8vaW5pY2lvIGRvIGNhbGN1bG8gZG8gZGlhIGRhIHBhc2NvYQogICAgICAgIGludCB4LCB5LCBhLCBiLCBjLCBkLCBlLCBhbm8sIGRpYSwgYWIsIGRpYXNlbWFuYSwgbWVzLCBjb250LCBjb250MiA9MCwgY29udDM9MCxjb250ND0wLGNvbnQ1PTAsY29udDY9MCxjb250Nz0wLGNvbnQ4PTAsY29udDk9MCxjb250MTA9MCxjb250MTE9MDsKICAgICAgICBzY2FuZigiJWQiLCAmYW5vKTsKICAgICAgICB4PTI0OwogICAgICAgIHk9NTsKICAgICAgICBhID0gYW5vJTE5OwogICAgICAgIGI9IGFubyU0OwogICAgICAgIGMgPSBhbm8lNzsKICAgICAgICBkID0gKDE5KmEreCklMzA7CiAgICAgICAgZSA9ICgyKmIrNCpjKzYqZCt5KSU3OwogICAgICAgIGlmIChkK2U+OSkKICAgICAgICB7CiAgICAgICAgICAgICAgICBkaWEgPWQrZS05OwogICAgICAgICAgICAgICAgbWVzID0gNDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGRpYT1kK2UrMjI7CiAgICAgICAgICAgICAgICBtZXM9MzsKICAgICAgICB9Ci8vZmltIGRvIGNhbGN1bG8gZG8gZGlhIGRhIHBhc2NvYQovL2luaWNpbyBkbyBjYWxjdWxvIHBhcmEgdmVyIHNlIG8gYW5vIGUgYmlzc2VzdG8KICAgICAgICB5PWFubzsKICAgICAgICBpZihhbm8lMTAwPT0wKXthbm89YW5vLzEwMDt9CiAgICAgICAgaWYgKGFubyU0PT0wKXthYj0xO30KICAgICAgICBlbHNle2FiPTA7fQovL2ZpbSBvIGNhbGN1bG8gcGFyYSB2ZXIgc2UgbyBhbm8gZSBiaXNzZXN0bwovL2luaWNpbyBkbyBjYWxjdWxvIHBhcmEgZW5jb250cmFyIG8gZGlhIDEgZGUgamFuZWlybwogICAgICAgIGlmIChtZXM9PTMpCiAgICAgICAgICAgICAgICBkaWFzZW1hbmE9OC0oZGlhK2FiKzI4KzMxKSU3OwogICAgICAgIGVsc2UgaWYgKG1lcz09NCkKICAgICAgICAgICAgICAgIGRpYXNlbWFuYT04LShkaWErYWIrMzErMjgrMzEpJTc7CiAgICAgICAgICAgICAgICBpZiAoZGlhc2VtYW5hID42KSBkaWFzZW1hbmEgLT03OwovL2ZpbSBkbyBjYWxjdWxvIHBhcmEgZW5jb250cmFyIG8gZGlhIDEgZGUgamFuZWlybwovL2luaWNpbyBkbyBwcm9jZXNzbyBkZSBzYWlkYQogICAgICAgIHByaW50ZigiQ2FsZW5kYXJpbyBkbyBhbm8gJWRcbiIsIGFubyk7CiAgICAgICAgZm9yIChpbnQgc2VtYW5hID0gMDsgc2VtYW5hIDwgMTIgOyBzZW1hbmErKyl7CiAgICAgICAgICAgICAgICBwcmludGYoInwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiIpOwogICAgICAgICAgICAgICAgaWYgKHNlbWFuYSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoInxKYW5laXJvICAgICAgICAgICAgICAgICAgICAgIHxcbiIpOwogICAgICAgICAgICAgICAgaWYgKHNlbWFuYSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoInxGZXZlcmVpcm8gICAgICAgICAgICAgICAgICAgIHxcbiIpOwogICAgICAgICAgICAgICAgaWYgKHNlbWFuYSA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoInxNYXLDp28gICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8QWJyaWwgICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gNCkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8TWFpbyAgICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gNSkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8SnVuaG8gICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gNikKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8SnVsaG8gICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gNykKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8QWdvc3RvICAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gOCkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8U2V0ZW1icm8gICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gOSkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJ8T3V0dWJybyAgICAgICAgICAgICAgICAgICAgICB8XG4iKTsKICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gMTApCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigifE5vdmVtYnJvICAgICAgICAgICAgICAgICAgICAgfFxuIik7CiAgICAgICAgICAgICAgICBpZiAoc2VtYW5hID09IDExKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoInxEZXplbWJybyAgICAgICAgICAgICAgICAgICAgIHxcbiIpOyAgICAgICAgCiAgICAgICAgICAgICAgICBwcmludGYoInwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiIpOyAgICAgICAgCiAgICAgICAgICAgICAgICBwcmludGYoInwgZG9tIHNlZyB0ZXIgcXVhIHF1aSBzZXggc2FiIHxcbiIpOyAgICAgICAKICAgICAgICBmb3IgKCBpbnQgbmRpYW1lcyA9IDAsIGFkaWEgPTE7IG5kaWFtZXMgPCA0MjtuZGlhbWVzKyspewogICAgICAgICAgICAgICAgIHByaW50ZigifCIpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IG5kaWEgPTA7IG5kaWEgPDcgO25kaWFtZXMrKywgbmRpYSsrKXsKLypqYW5laXJvKi8gICBpZiAoc2VtYW5hID09IDApewogICAgICAgICAgICAgICAgICAgICAgaWYgKCAobmRpYW1lcyA8IGRpYXNlbWFuYSkgfHwgKGFkaWEgPiAzMSkgKXsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkaWE+MzEpewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgICAgICB9ICAKICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci8qZmV2ZXJlaXJvKi8gaWYgKHNlbWFuYSA9PSAxKXsKICAgICAgICAgICAgICAgaWYoY29udCA+PSA3KXsKICAgICAgICAgICAgICAgICBjb250LT03OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgaWYgKGNvbnQgPiAwKXsKICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8IDcgLSBjb250KSB8fCAoYWRpYSA+IDI4K2FiKSl7CiAgICAgICAgICAgICAgICAgIGlmIChhZGlhID4gMjgrYWIpCiAgICAgICAgICAgICAgICAgICAgY29udDIrKzsKICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCl7CiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7ICAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCAgY29udCkgfHwgKGFkaWEgPiAyOCthYikpewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAtLSIpOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDI4K2FiKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQovKm1hcmNvKi9pZiAoc2VtYW5hID09IDIpewogICAgICAgICAgIGlmKGNvbnQyID49IDcpewogICAgICAgICAgICAgY29udDItPTc7CiAgICAgICAgICAgIH0KICAgICAgICAgICBpZiAoY29udDIgPiAwKXsKICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCA3IC0gY29udDIpIHx8IChhZGlhID4gMzEpKXsKICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICBpZiAoYWRpYSA+IDMxKQogICAgICAgICAgIGNvbnQzKys7CiAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwcmludGYoIiAgJWQiLCBhZGlhKTsKICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgfQogICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgIGNvbnQyKSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMxKQogICAgICAgICAgICAgICAgICBjb250MysrOwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgIGlmICggYWRpYSA8MTApCiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSAgICAgICAgICAKICAgICB9Ci8qYWJyaWwqL2lmIChzZW1hbmEgPT0gMyl7CiAgICAgICAgICAgaWYoY29udDMgPj0gNyl7CiAgICAgICAgICAgICBjb250My09NzsKICAgICAgICAgICAgIH0KICAgICAgICAgICBpZiAoY29udDMgPiAwKXsKICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8IDcgLSBjb250MykgfHwgKGFkaWEgPiAzMCkpewogICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgIGlmIChhZGlhID4gMzApCiAgICAgICAgICAgICAgICBjb250NCsrOwogICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgIGNvbnQzKSB8fCAoYWRpYSA+IDMwKSl7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMwKQogICAgICAgICAgICAgICAgICAgICAgY29udDQrKzsKICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gICAgICAgICAgCiAgICB9Ci8qbWFpbyovaWYgKHNlbWFuYSA9PSA0KXsKICAgICAgICAgIGlmKGNvbnQ0ID49IDcpewogICAgICAgICAgICBjb250NC09NzsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjb250NCA+IDApewogICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCA3IC0gY29udDQpIHx8IChhZGlhID4gMzEpKXsKICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMxKQogICAgICAgICAgICAgICBjb250NSsrOwogICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8ICBjb250NCkgfHwgKGFkaWEgPiAzMSkpewogICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICAgaWYgKGFkaWEgPiAzMSkKICAgICAgICAgICAgICAgICAgIGNvbnQ1Kys7CiAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgYWRpYSsrOwogCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gICAgICAgICAgCiAgICB9Ci8qanVuaG8qL2lmIChzZW1hbmEgPT0gNSl7CiAgICAgICAgICAgaWYoY29udDUgPj0gNyl7CiAgICAgICAgICAgIGNvbnQ1LT03OwogICAgICAgICAgIH0KICAgICAgICAgICBpZiAoY29udDUgPiAwKXsKICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgNyAtIGNvbnQ1KSB8fCAoYWRpYSA+IDMwKSl7CiAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgIGlmIChhZGlhID4gMzApCiAgICAgICAgICAgICAgY29udDYrKzsKICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgIH0KICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8ICBjb250NSkgfHwgKGFkaWEgPiAzMCkpewogICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgaWYgKGFkaWEgPiAzMCkKICAgICAgICAgICAgICAgICBjb250NisrOwogICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOyAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSAgICAgICAgICAKICAgICAgICAgfQovKmp1bGhvKi9pZiAoc2VtYW5hID09IDYpewogICAgICAgICAgaWYoY29udDYgPj0gNyl7CiAgICAgICAgICAgIGNvbnQ2LT03OwogICAgICAgICAgIH0KICAgICAgICAgICBpZiAoY29udDYgPiAwKXsKICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCA3IC0gY29udDYpIHx8IChhZGlhID4gMzEpKXsKICAgICAgICAgICAgIHByaW50ZigiICAtLSIpOwogICAgICAgICAgIGlmIChhZGlhID4gMzEpCiAgICAgICAgICAgICBjb250NysrOwogICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICB9CiAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgIGNvbnQ2KSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgIGlmIChhZGlhID4gMzEpCiAgICAgICAgICAgICAgICAgY29udDcrKzsKICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgICAgICB9CiAgICAgICAgICB9ICAgICAgICAgIAogICAgICB9Ci8qYWdvc3RvKi9pZiAoc2VtYW5hID09IDcpewogICAgICAgICAgICBpZihjb250NyA+PSA3KXsKICAgICAgICAgICAgICBjb250Ny09NzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY29udDcgPiAwKXsKICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgNyAtIGNvbnQ3KSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICAgaWYgKGFkaWEgPiAzMSkKICAgICAgICAgICAgICAgICAgICBjb250OCsrOwogICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgIGNvbnQ3KSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGFkaWEgPiAzMSkKICAgICAgICAgICAgICAgICAgICAgICBjb250OCsrOwogICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYWRpYSA8MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci8qc2V0ZW1icm8qLyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbWFuYSA9PSA4KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNvbnQ4ID49IDcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250OC09NzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udDggPiAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCA3IC0gY29udDgpIHx8IChhZGlhID4gMzApKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGlhID4gMzApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250OSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBhZGlhIDwxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIDAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8ICBjb250OCkgfHwgKGFkaWEgPiAzMCkpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkaWEgPiAzMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQ5Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQovKm91dHVicm8qLyAgICAgICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gOSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjb250OSA+PSA3KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udDktPTc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnQ5ID4gMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgNyAtIGNvbnQ5KSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgIC0tIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udDEwKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZGlhbWVzIDwgIGNvbnQ5KSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udDEwKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQovKm5vdmVtYnJvKi8gICAgICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gMTApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY29udDEwID49IDcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250MTAtPTc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnQxMCA+IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8IDcgLSBjb250MTApIHx8IChhZGlhID4gMzApKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGlhID4gMzApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250MTErKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYWRpYSA8MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCAgY29udDEwKSB8fCAoYWRpYSA+IDMwKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRpYSA+IDMwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udDExKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFkaWEgPDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgMCVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGlhKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQovKmRlemVtYnJvKi8gICAgICAgICAgICAgICAgICAgIGlmIChzZW1hbmEgPT0gMTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY29udDExID49IDcpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250MTEtPTc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnQxMSA+IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmRpYW1lcyA8IDcgLSBjb250MTEpIHx8IChhZGlhID4gMzEpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGlhID4gMzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250MTErKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYWRpYSA8MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAlZCIsIGFkaWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRpYSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG5kaWFtZXMgPCAgY29udDExKSB8fCAoYWRpYSA+IDMxKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAgLS0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYWRpYSA8MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICAwJWQiLCBhZGlhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgICVkIiwgYWRpYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkaWErKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiB8Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHByaW50ZigifC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuIik7ICAKcmV0dXJuIDA7Cn0KCgo=