// Read an integer from standard input.
// @note Consume all decimal digits; saturate on overflow.
int 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();
}
int result = 0;
for (int digit; uint(digit = c - '0') < 10; c = getchar())
{
// Subtract to utilize larger magnitude of negative.
result = (result.checked!Saturate * 10 - digit).get;
}
ungetc(c, stdin);
return negative ? result : (-result.checked!Saturate).get;
}
void main()
{
import std.stdio;
int n = 10;
for (int i = 0; i < n; i++)
{
writeln(readInt());
}
}
Ly8gUmVhZCBhbiBpbnRlZ2VyIGZyb20gc3RhbmRhcmQgaW5wdXQuCi8vIEBub3RlIENvbnN1bWUgYWxsIGRlY2ltYWwgZGlnaXRzOyBzYXR1cmF0ZSBvbiBvdmVyZmxvdy4KCmludCByZWFkSW50KCkgQG5vZ2MKewogICAgaW1wb3J0IGNvcmUuc3RkYy5jdHlwZSA6IGlzc3BhY2U7CiAgICBpbXBvcnQgY29yZS5zdGRjLnN0ZGlvIDogZ2V0Y2hhciwgdW5nZXRjLCBzdGRpbjsKICAgIGltcG9ydCBzdGQuZXhwZXJpbWVudGFsLmNoZWNrZWRpbnQgOiBjaGVja2VkLCBTYXR1cmF0ZTsKCiAgICBpbnQgYzsKICAgIGRvCiAgICB7CiAgICAgICAgYyA9IGdldGNoYXIoKTsKICAgIH0KICAgIHdoaWxlIChpc3NwYWNlKGMpKTsKCiAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7CgogICAgc3dpdGNoIChjKQogICAgewogICAgICAgIGRlZmF1bHQgOiBicmVhazsKICAgICAgICBjYXNlICctJzogbmVnYXRpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICBnb3RvIGNhc2UgJysnOwogICAgICAgIGNhc2UgJysnOiBjID0gZ2V0Y2hhcigpOwogICAgfQoKICAgIGludCByZXN1bHQgPSAwOwoKICAgIGZvciAoaW50IGRpZ2l0OyB1aW50KGRpZ2l0ID0gYyAtICcwJykgPCAxMDsgYyA9IGdldGNoYXIoKSkKICAgIHsKICAgICAgICAvLyBTdWJ0cmFjdCB0byB1dGlsaXplIGxhcmdlciBtYWduaXR1ZGUgb2YgbmVnYXRpdmUuCiAgICAgICAgcmVzdWx0ID0gKHJlc3VsdC5jaGVja2VkIVNhdHVyYXRlICogMTAgLSBkaWdpdCkuZ2V0OwogICAgfQoKICAgIHVuZ2V0YyhjLCBzdGRpbik7CiAgICByZXR1cm4gbmVnYXRpdmUgPyByZXN1bHQgOiAoLXJlc3VsdC5jaGVja2VkIVNhdHVyYXRlKS5nZXQ7Cn0KCnZvaWQgbWFpbigpCnsKICAgIGltcG9ydCBzdGQuc3RkaW87CgogICAgaW50IG4gPSAxMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICB3cml0ZWxuKHJlYWRJbnQoKSk7CiAgICB9Cn0=