// Read an integer from standard input. (2.01)
// @note Consume all decimal digits; saturate on overflow.
import std.traits;
template readInt(T)
if (isIntegral!T && isSigned!T && T.sizeof >= int.sizeof)
{
T readInt() @nogc
{
import core.stdc.ctype : isspace;
import core.stdc.stdio : getchar, ungetc, stdin;
import std.experimental.checkedint : checked, Saturate;
int c;
do
{
c = getchar();
}
while (isspace(c));
bool negative = false;
switch (c)
{
default : break;
case '-': negative = true;
goto case '+';
case '+': c = getchar();
}
auto result = T(0).checked!Saturate;
for (int digit; uint(digit = c - '0') < 10; c = getchar())
{
// Subtract to utilize larger magnitude of negative.
result = result * 10 - digit;
}
ungetc(c, stdin);
return negative ? result.get : (-result).get;
}
}
void main()
{
import std.stdio;
int n = 10;
for (int i = 0; i < n; i++)
{
writeln(readInt!int());
}
for (int i = 0; i < n; i++)
{
writeln(readInt!long());
}
}
Ly8gUmVhZCBhbiBpbnRlZ2VyIGZyb20gc3RhbmRhcmQgaW5wdXQuICgyLjAxKQovLyBAbm90ZSBDb25zdW1lIGFsbCBkZWNpbWFsIGRpZ2l0czsgc2F0dXJhdGUgb24gb3ZlcmZsb3cuCgppbXBvcnQgc3RkLnRyYWl0czsKCnRlbXBsYXRlIHJlYWRJbnQoVCkKICAgIGlmIChpc0ludGVncmFsIVQgJiYgaXNTaWduZWQhVCAmJiBULnNpemVvZiA+PSBpbnQuc2l6ZW9mKQp7CiAgICBUIHJlYWRJbnQoKSBAbm9nYwogICAgewogICAgICAgIGltcG9ydCBjb3JlLnN0ZGMuY3R5cGUgOiBpc3NwYWNlOwogICAgICAgIGltcG9ydCBjb3JlLnN0ZGMuc3RkaW8gOiBnZXRjaGFyLCB1bmdldGMsIHN0ZGluOwogICAgICAgIGltcG9ydCBzdGQuZXhwZXJpbWVudGFsLmNoZWNrZWRpbnQgOiBjaGVja2VkLCBTYXR1cmF0ZTsKCiAgICAgICAgaW50IGM7CiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgIGMgPSBnZXRjaGFyKCk7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChpc3NwYWNlKGMpKTsKCiAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOwoKICAgICAgICBzd2l0Y2ggKGMpCiAgICAgICAgewogICAgICAgICAgICBkZWZhdWx0IDogYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJy0nOiBuZWdhdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNhc2UgJysnOwogICAgICAgICAgICBjYXNlICcrJzogYyA9IGdldGNoYXIoKTsKICAgICAgICB9CgogICAgICAgIGF1dG8gcmVzdWx0ID0gVCgwKS5jaGVja2VkIVNhdHVyYXRlOwoKICAgICAgICBmb3IgKGludCBkaWdpdDsgdWludChkaWdpdCA9IGMgLSAnMCcpIDwgMTA7IGMgPSBnZXRjaGFyKCkpCiAgICAgICAgewogICAgICAgICAgICAvLyBTdWJ0cmFjdCB0byB1dGlsaXplIGxhcmdlciBtYWduaXR1ZGUgb2YgbmVnYXRpdmUuCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwIC0gZGlnaXQ7CiAgICAgICAgfQoKICAgICAgICB1bmdldGMoYywgc3RkaW4pOwogICAgICAgIHJldHVybiBuZWdhdGl2ZSA/IHJlc3VsdC5nZXQgOiAoLXJlc3VsdCkuZ2V0OwogICAgfQp9Cgp2b2lkIG1haW4oKQp7CiAgICBpbXBvcnQgc3RkLnN0ZGlvOwoKICAgIGludCBuID0gMTA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgd3JpdGVsbihyZWFkSW50IWludCgpKTsKICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICB3cml0ZWxuKHJlYWRJbnQhbG9uZygpKTsKICAgIH0KfQ==
LTAgLTEgKzEgMTIzNDUKMjE0NzQ4MzY0NyAtMjE0NzQ4MzY0OAoyMTQ3NDgzNjQ4IC0yMTQ3NDgzNjQ5CjkyMjMzNzIwMzY4NTQ3NzU4MDcgLTkyMjMzNzIwMzY4NTQ3NzU4MDgKCi0wIC0xICsxIDEyMzQ1CjIxNDc0ODM2NDcgLTIxNDc0ODM2NDgKMjE0NzQ4MzY0OCAtMjE0NzQ4MzY0OQo5MjIzMzcyMDM2ODU0Nzc1ODA3IC05MjIzMzcyMDM2ODU0Nzc1ODA4
-0 -1 +1 12345
2147483647 -2147483648
2147483648 -2147483649
9223372036854775807 -9223372036854775808
-0 -1 +1 12345
2147483647 -2147483648
2147483648 -2147483649
9223372036854775807 -9223372036854775808