#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
void print_int128(__int128_t value);
void print_uint128(__uint128_t value);
__int128_t str_to_int128(const char *str);
__int128_t abs128(__int128_t x);
void zero(char* text, size_t size);
void bitcounter(int b, char* text, __int128_t y);
char* binary(__int128_t x);
int main(void)
{
//FILE* filePtr;
//filePtr = freopen("Output.txt", "w", stdout);
size_t t=0;
char input[500];
char text[10];
char number[50];
int b;
//long long int x;
zero(input, sizeof(input));
zero(number, sizeof(number));
fgets(input
, sizeof(input
), stdin
);
for(size_t i=0; i<t; i++)
{
zero(input, sizeof(input));
zero(number, sizeof(number));
zero(text, sizeof(text));
b = 0;
//x = 0;
fgets(input
, sizeof(input
), stdin
); sscanf(input
, "%d %s %s", &b
, text
, number
);
if (number[len - 1] == '\n')
{
number[len - 1] = '\0';
}
__int128_t x = str_to_int128(number);
bitcounter(b, text, x);
}
//fclose(filePtr);
return 0;
}
void zero(char* text, size_t size)
{
for(size_t i=0; i<size; i++)
{
text[i] = '\0';
}
}
void bitcounter(int b, char* text, __int128_t y)
{
__int128_t x = y;
__int128_t full64signed = 9223372036854775808ULL;
__int128_t full64unsigned = 18446744073709551615ULL;
char value[129];
zero(value, sizeof(value));
char* binaryPtr;
if(strcmp(text
, "SIGNED") == 0 && x
<0) {binaryPtr
= binary
(abs128
(y
)-1);} else {binaryPtr = binary(abs128(y));}
//printf("binaryPtr: %s\n", binaryPtr);
//printf("value: %s\n", value);
char fin[129];
zero(fin, sizeof(fin));
//printf("fin: %s\n", fin);
if(strcmp(text
, "SIGNED") == 0) {
if(x<0)
{
if(b == 2)
{
if(x
< -2) {printf("-2 1 Ups\n");} else if(x
== -1) {printf("-2 1 10\n");} else if(x
== -2) {printf("-2 1 11\n");} }
else if(b == 3)
{
if(x
< -4) {printf("-4 3 Ups\n");} else if(x
== -1) {printf("-4 3 1%s\n", &fin
[1]);} else {printf("-4 3 1%s\n", &fin
[1]);} }
else if(b > 3 && b < 64)
{
unsigned long long int minimum = (long double)powl(2,b-1);
unsigned long long int maximum = (long double)powl(2,b-1)-1;
__int128_t xu = abs128(x);
if(xu
> (long double)powl
(2,b
-1)) {printf("-%llu %llu Ups\n", minimum
, maximum
);} else {printf("-%llu %llu 1%s\n", minimum
, maximum
, &fin
[1]);} }
else
{
unsigned long long int minimum = (long double)powl(2,b-1);
unsigned long long int maximum = (long double)powl(2,b-1)-1;
__int128_t xu = abs128(x);
if(xu
> (long double)powl
(2,b
-1) || xu
> full64signed
) {printf("-%llu %llu Ups\n", minimum
, maximum
);} else {printf("-%llu %llu 1%s\n", minimum
, maximum
, &fin
[1]);} }
}
else
{
if(b == 2)
{
if(x
>1) {printf("-2 1 Ups\n");} else if(x
== 0) {printf("-2 1 00\n");} else if(x
== 1) {printf("-2 1 01\n");} }
else if(b == 3)
{
if(x
> 3) {printf("-4 3 Ups\n");} else {printf("-4 3 %s\n", fin
);} }
else
{
unsigned long long int minimum = (long double)powl(2,b-1);
unsigned long long int maximum = (long double)powl(2,b-1)-1;
__uint128_t xu = abs128(x);
__uint128_t maxValue = ((__uint128_t)1 << b) - 1;
if(xu
> (long double)(powl
(2, b
-1))-1 || xu
> maxValue
) {printf("-%llu %llu Ups\n", minimum
, maximum
);} else {printf("-%llu %llu %s\n", minimum
, maximum
, fin
);} }
}
}
else if(strcmp(text
, "UNSIGNED") == 0) {
if(b == 0)
{
}
else if(b == 1)
{
if(x
>1) {printf("0 1 Ups\n");} else if(x
== 1) {printf("0 1 1\n");} else if(x
== 0) {printf("0 1 0\n");} }
else if(b == 2)
{
if(x
>3) {printf("0 3 Ups\n");} }
else
{
unsigned long long int maximum = (long double)powl(2,b)-1;
__uint128_t xu = abs128(x);
if(xu
> (long double)powl
(2,b
) || xu
> full64unsigned
|| x
<0) {printf("0 %llu Ups\n", maximum
);} else {printf("0 %llu %s\n", maximum
, fin
);} }
}
}
char* binary(__int128_t x)
{
char* result
= (char*)malloc(129 * sizeof(char)); // 128 bitów + 1 dla '\0' if (!result)
{
fprintf(stderr
, "Memory allocation failed\n"); }
result[128] = '\0';
for (int i = 127; i >= 0; i--) {
result[i] = (x & 1) ? '1' : '0';
x >>= 1;
}
return result;
}
void print_int128(__int128_t value)
{
if (value == 0)
{
return;
}
char buffer[40];
int i = 39;
buffer[i] = '\0';
i--;
int negative = 0;
if (value < 0)
{
negative = 1;
value = -value;
}
while (value > 0)
{
buffer[i] = '0' + (value % 10);
value /= 10;
i--;
}
if (negative)
{
buffer[i] = '-';
i--;
}
}
__int128_t str_to_int128(const char *str)
{
__int128_t result = 0;
int sign = 1;
if (*str == '-')
{
sign = -1;
str++;
}
while (*str)
{
result = result * 10 + (*str - '0');
str++;
}
return sign * result;
}
__int128_t abs128(__int128_t x)
{
return (x < 0) ? -x : x;
}
void print_uint128(__uint128_t value)
{
if (value == 0)
{
return;
}
char buffer[40]; // 128-bitowa liczba całkowita zmieści się w maksymalnie 39 cyfrach dziesiętnych
int i = 39;
buffer[i] = '\0';
i--;
while (value > 0)
{
buffer[i] = '0' + (value % 10);
value /= 10;
i--;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+Cgp2b2lkIHByaW50X2ludDEyOChfX2ludDEyOF90IHZhbHVlKTsKdm9pZCBwcmludF91aW50MTI4KF9fdWludDEyOF90IHZhbHVlKTsKX19pbnQxMjhfdCBzdHJfdG9faW50MTI4KGNvbnN0IGNoYXIgKnN0cik7Cl9faW50MTI4X3QgYWJzMTI4KF9faW50MTI4X3QgeCk7CnZvaWQgemVybyhjaGFyKiB0ZXh0LCBzaXplX3Qgc2l6ZSk7CnZvaWQgYml0Y291bnRlcihpbnQgYiwgY2hhciogdGV4dCwgX19pbnQxMjhfdCB5KTsKY2hhciogYmluYXJ5KF9faW50MTI4X3QgeCk7CgppbnQgbWFpbih2b2lkKQp7CiAgICAvL0ZJTEUqIGZpbGVQdHI7CiAgICAvL2ZpbGVQdHIgPSBmcmVvcGVuKCJPdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoKICAgIHNpemVfdCB0PTA7CiAgICBjaGFyIGlucHV0WzUwMF07CiAgICBjaGFyIHRleHRbMTBdOwogICAgY2hhciBudW1iZXJbNTBdOwogICAgaW50IGI7CiAgICAvL2xvbmcgbG9uZyBpbnQgeDsKCiAgICB6ZXJvKGlucHV0LCBzaXplb2YoaW5wdXQpKTsKICAgIHplcm8obnVtYmVyLCBzaXplb2YobnVtYmVyKSk7CiAgICBmZ2V0cyhpbnB1dCwgc2l6ZW9mKGlucHV0KSwgc3RkaW4pOwogICAgc3NjYW5mKGlucHV0LCAiJXp1IiwgJnQpOwoKICAgIGZvcihzaXplX3QgaT0wOyBpPHQ7IGkrKykKICAgIHsKICAgICAgICB6ZXJvKGlucHV0LCBzaXplb2YoaW5wdXQpKTsKICAgICAgICB6ZXJvKG51bWJlciwgc2l6ZW9mKG51bWJlcikpOwogICAgICAgIHplcm8odGV4dCwgc2l6ZW9mKHRleHQpKTsKICAgICAgICBiID0gMDsKICAgICAgICAvL3ggPSAwOwoKICAgICAgICBmZ2V0cyhpbnB1dCwgc2l6ZW9mKGlucHV0KSwgc3RkaW4pOwogICAgICAgIHNzY2FuZihpbnB1dCwgIiVkICVzICVzIiwgJmIsIHRleHQsIG51bWJlcik7CgogICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4obnVtYmVyKTsKICAgICAgICBpZiAobnVtYmVyW2xlbiAtIDFdID09ICdcbicpIAogICAgICAgIHsKICAgICAgICAgICAgbnVtYmVyW2xlbiAtIDFdID0gJ1wwJzsKICAgICAgICB9CgogICAgICAgIF9faW50MTI4X3QgeCA9IHN0cl90b19pbnQxMjgobnVtYmVyKTsKCiAgICAgICAgYml0Y291bnRlcihiLCB0ZXh0LCB4KTsKICAgIH0KCiAgICAvL2ZjbG9zZShmaWxlUHRyKTsKICAgIHJldHVybiAwOwp9Cgp2b2lkIHplcm8oY2hhciogdGV4dCwgc2l6ZV90IHNpemUpCnsKICAgIGZvcihzaXplX3QgaT0wOyBpPHNpemU7IGkrKykKICAgIHsKICAgICAgICB0ZXh0W2ldID0gJ1wwJzsKICAgIH0KfQoKdm9pZCBiaXRjb3VudGVyKGludCBiLCBjaGFyKiB0ZXh0LCBfX2ludDEyOF90IHkpCnsKICAgIF9faW50MTI4X3QgeCA9IHk7CiAgICBfX2ludDEyOF90IGZ1bGw2NHNpZ25lZCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDhVTEw7CiAgICBfX2ludDEyOF90IGZ1bGw2NHVuc2lnbmVkID0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEw7CiAgICBjaGFyIHZhbHVlWzEyOV07CiAgICB6ZXJvKHZhbHVlLCBzaXplb2YodmFsdWUpKTsKCiAgICBjaGFyKiBiaW5hcnlQdHI7CiAgICBpZihzdHJjbXAodGV4dCwgIlNJR05FRCIpID09IDAgJiYgeDwwKSB7YmluYXJ5UHRyID0gYmluYXJ5KGFiczEyOCh5KS0xKTt9CiAgICBlbHNlIHtiaW5hcnlQdHIgPSBiaW5hcnkoYWJzMTI4KHkpKTt9CiAgICAvL3ByaW50ZigiYmluYXJ5UHRyOiAlc1xuIiwgYmluYXJ5UHRyKTsKICAgIHN0cmNweSh2YWx1ZSwgYmluYXJ5UHRyKTsKICAgIC8vcHJpbnRmKCJ2YWx1ZTogJXNcbiIsIHZhbHVlKTsKICAgIGZyZWUoYmluYXJ5UHRyKTsKCiAgICBjaGFyIGZpblsxMjldOwogICAgemVybyhmaW4sIHNpemVvZihmaW4pKTsKCiAgICBzcHJpbnRmKGZpbiwgIiVzIiwgJnZhbHVlWzEyOC1iXSk7CiAgICAvL3ByaW50ZigiZmluOiAlc1xuIiwgZmluKTsKCiAgICBpZihzdHJjbXAodGV4dCwgIlNJR05FRCIpID09IDApCiAgICB7CiAgICAgICAgaWYoeDwwKQogICAgICAgIHsKICAgICAgICAgICAgaWYoYiA9PSAyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZih4IDwgLTIpIHtwcmludGYoIi0yIDEgVXBzXG4iKTt9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHggPT0gLTEpIHtwcmludGYoIi0yIDEgMTBcbiIpO30KICAgICAgICAgICAgICAgIGVsc2UgaWYoeCA9PSAtMikge3ByaW50ZigiLTIgMSAxMVxuIik7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoYiA9PSAzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZih4IDwgLTQpIHtwcmludGYoIi00IDMgVXBzXG4iKTt9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHggPT0gLTEpIHtwcmludGYoIi00IDMgMSVzXG4iLCAmZmluWzFdKTt9CiAgICAgICAgICAgICAgICBlbHNlIHtwcmludGYoIi00IDMgMSVzXG4iLCAmZmluWzFdKTt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihiID4gMyAmJiBiIDwgNjQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgbWluaW11bSA9IChsb25nIGRvdWJsZSlwb3dsKDIsYi0xKTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgbWF4aW11bSA9IChsb25nIGRvdWJsZSlwb3dsKDIsYi0xKS0xOwogICAgICAgICAgICAgICAgX19pbnQxMjhfdCB4dSA9IGFiczEyOCh4KTsKICAgICAgICAgICAgICAgIGlmKHh1ID4gKGxvbmcgZG91YmxlKXBvd2woMixiLTEpKSB7cHJpbnRmKCItJWxsdSAlbGx1IFVwc1xuIiwgbWluaW11bSwgbWF4aW11bSk7fQogICAgICAgICAgICAgICAgZWxzZSB7cHJpbnRmKCItJWxsdSAlbGx1IDElc1xuIiwgbWluaW11bSwgbWF4aW11bSwgJmZpblsxXSk7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBtaW5pbXVtID0gKGxvbmcgZG91YmxlKXBvd2woMixiLTEpOwogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBtYXhpbXVtID0gKGxvbmcgZG91YmxlKXBvd2woMixiLTEpLTE7CiAgICAgICAgICAgICAgICBfX2ludDEyOF90IHh1ID0gYWJzMTI4KHgpOwogICAgICAgICAgICAgICAgaWYoeHUgPiAobG9uZyBkb3VibGUpcG93bCgyLGItMSkgfHwgeHUgPiBmdWxsNjRzaWduZWQpIHtwcmludGYoIi0lbGx1ICVsbHUgVXBzXG4iLCBtaW5pbXVtLCBtYXhpbXVtKTt9CiAgICAgICAgICAgICAgICBlbHNlIHtwcmludGYoIi0lbGx1ICVsbHUgMSVzXG4iLCBtaW5pbXVtLCBtYXhpbXVtLCAmZmluWzFdKTt9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYoYiA9PSAyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZih4PjEpIHtwcmludGYoIi0yIDEgVXBzXG4iKTt9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHggPT0gMCkge3ByaW50ZigiLTIgMSAwMFxuIik7fQogICAgICAgICAgICAgICAgZWxzZSBpZih4ID09IDEpIHtwcmludGYoIi0yIDEgMDFcbiIpO30KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGIgPT0gMykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoeCA+IDMpIHtwcmludGYoIi00IDMgVXBzXG4iKTt9CiAgICAgICAgICAgICAgICBlbHNlIHtwcmludGYoIi00IDMgJXNcbiIsIGZpbik7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBtaW5pbXVtID0gKGxvbmcgZG91YmxlKXBvd2woMixiLTEpOwogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBtYXhpbXVtID0gKGxvbmcgZG91YmxlKXBvd2woMixiLTEpLTE7CiAgICAgICAgICAgICAgICBfX3VpbnQxMjhfdCB4dSA9IGFiczEyOCh4KTsKICAgICAgICAgICAgICAgIF9fdWludDEyOF90IG1heFZhbHVlID0gKChfX3VpbnQxMjhfdCkxIDw8IGIpIC0gMTsKICAgICAgICAgICAgICAgIGlmKHh1ID4gKGxvbmcgZG91YmxlKShwb3dsKDIsIGItMSkpLTEgfHwgeHUgPiBtYXhWYWx1ZSkge3ByaW50ZigiLSVsbHUgJWxsdSBVcHNcbiIsIG1pbmltdW0sIG1heGltdW0pO30KICAgICAgICAgICAgICAgIGVsc2Uge3ByaW50ZigiLSVsbHUgJWxsdSAlc1xuIiwgbWluaW11bSwgbWF4aW11bSwgZmluKTt9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmKHN0cmNtcCh0ZXh0LCAiVU5TSUdORUQiKSA9PSAwKQogICAgewogICAgICAgIGlmKGIgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiMCAwIFVwc1xuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoYiA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaWYoeD4xKSB7cHJpbnRmKCIwIDEgVXBzXG4iKTt9CiAgICAgICAgICAgIGVsc2UgaWYoeCA9PSAxKSB7cHJpbnRmKCIwIDEgMVxuIik7fQogICAgICAgICAgICBlbHNlIGlmKHggPT0gMCkge3ByaW50ZigiMCAxIDBcbiIpO30KICAgICAgICB9CiAgICAgICAgZWxzZSBpZihiID09IDIpCiAgICAgICAgewogICAgICAgICAgICBpZih4PjMpIHtwcmludGYoIjAgMyBVcHNcbiIpO30KICAgICAgICAgICAgZWxzZSBwcmludGYoIjAgMyAlc1xuIiwgZmluKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBtYXhpbXVtID0gKGxvbmcgZG91YmxlKXBvd2woMixiKS0xOwogICAgICAgICAgICBfX3VpbnQxMjhfdCB4dSA9IGFiczEyOCh4KTsKICAgICAgICAgICAgaWYoeHUgPiAobG9uZyBkb3VibGUpcG93bCgyLGIpIHx8IHh1ID4gZnVsbDY0dW5zaWduZWQgfHwgeDwwKSB7cHJpbnRmKCIwICVsbHUgVXBzXG4iLCBtYXhpbXVtKTt9CiAgICAgICAgICAgIGVsc2Uge3ByaW50ZigiMCAlbGx1ICVzXG4iLCBtYXhpbXVtLCBmaW4pO30KICAgICAgICB9CiAgICB9Cn0KCmNoYXIqIGJpbmFyeShfX2ludDEyOF90IHgpIAp7CiAgICBjaGFyKiByZXN1bHQgPSAoY2hhciopbWFsbG9jKDEyOSAqIHNpemVvZihjaGFyKSk7IC8vIDEyOCBiaXTDs3cgKyAxIGRsYSAnXDAnCiAgICBpZiAoIXJlc3VsdCkgCiAgICB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwogICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgIH0KCiAgICByZXN1bHRbMTI4XSA9ICdcMCc7CgogICAgZm9yIChpbnQgaSA9IDEyNzsgaSA+PSAwOyBpLS0pIHsKICAgICAgICByZXN1bHRbaV0gPSAoeCAmIDEpID8gJzEnIDogJzAnOwogICAgICAgIHggPj49IDE7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKdm9pZCBwcmludF9pbnQxMjgoX19pbnQxMjhfdCB2YWx1ZSkgCnsKICAgIGlmICh2YWx1ZSA9PSAwKSAKICAgIHsKICAgICAgICBwcmludGYoIjAiKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgY2hhciBidWZmZXJbNDBdOwogICAgaW50IGkgPSAzOTsKICAgIGJ1ZmZlcltpXSA9ICdcMCc7CiAgICBpLS07CgogICAgaW50IG5lZ2F0aXZlID0gMDsKICAgIGlmICh2YWx1ZSA8IDApIAogICAgewogICAgICAgIG5lZ2F0aXZlID0gMTsKICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKICAgIH0KCiAgICB3aGlsZSAodmFsdWUgPiAwKSAKICAgIHsKICAgICAgICBidWZmZXJbaV0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CiAgICAgICAgdmFsdWUgLz0gMTA7CiAgICAgICAgaS0tOwogICAgfQoKICAgIGlmIChuZWdhdGl2ZSkgCiAgICB7CiAgICAgICAgYnVmZmVyW2ldID0gJy0nOwogICAgICAgIGktLTsKICAgIH0KCiAgICBwcmludGYoIiVzIiwgJmJ1ZmZlcltpICsgMV0pOwp9CgpfX2ludDEyOF90IHN0cl90b19pbnQxMjgoY29uc3QgY2hhciAqc3RyKSAKewogICAgX19pbnQxMjhfdCByZXN1bHQgPSAwOwogICAgaW50IHNpZ24gPSAxOwoKICAgIGlmICgqc3RyID09ICctJykgCiAgICB7CiAgICAgICAgc2lnbiA9IC0xOwogICAgICAgIHN0cisrOwogICAgfQoKICAgIHdoaWxlICgqc3RyKSAKICAgIHsKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxMCArICgqc3RyIC0gJzAnKTsKICAgICAgICBzdHIrKzsKICAgIH0KCiAgICByZXR1cm4gc2lnbiAqIHJlc3VsdDsKfQoKX19pbnQxMjhfdCBhYnMxMjgoX19pbnQxMjhfdCB4KSAKewogICAgcmV0dXJuICh4IDwgMCkgPyAteCA6IHg7Cn0KCnZvaWQgcHJpbnRfdWludDEyOChfX3VpbnQxMjhfdCB2YWx1ZSkgCnsKICAgIGlmICh2YWx1ZSA9PSAwKSAKICAgIHsKICAgICAgICBwcmludGYoIjAiKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgY2hhciBidWZmZXJbNDBdOyAvLyAxMjgtYml0b3dhIGxpY3piYSBjYcWCa293aXRhIHptaWXFm2NpIHNpxJkgdyBtYWtzeW1hbG5pZSAzOSBjeWZyYWNoIGR6aWVzacSZdG55Y2gKICAgIGludCBpID0gMzk7CiAgICBidWZmZXJbaV0gPSAnXDAnOwogICAgaS0tOwoKICAgIHdoaWxlICh2YWx1ZSA+IDApIAogICAgewogICAgICAgIGJ1ZmZlcltpXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKICAgICAgICB2YWx1ZSAvPSAxMDsKICAgICAgICBpLS07CiAgICB9CgogICAgcHJpbnRmKCIlcyIsICZidWZmZXJbaSArIDFdKTsKfQo=