struct DuckInfo {
unsigned long abi; const char *stdin_ptr; unsigned long stdin_size;
char *stdout_ptr; unsigned long stdout_limit; unsigned long stdout_size;
char *stderr_ptr; unsigned long stderr_limit; unsigned long stderr_size;
const char *IB_ptr; unsigned long IB_limit;
char *OB_ptr; unsigned long OB_limit; unsigned long tsc;
} __attribute__((packed));
int plus(int a, int b) { return a + b; }
void __libc_start_main(int (*mf)(int, char **), int ac, char **av) {
(void)mf; (void)ac;
char **e = av + 1;
while (*e) e++;
unsigned long *aux = (unsigned long *)(e + 1);
struct DuckInfo *d = 0;
for (; aux[0]; aux += 2) if (aux[0] == 0x6b637564) { d = (struct DuckInfo *)aux[1]; break; }
if (!d) { __asm__ volatile("mov $60,%eax; xor %edi,%edi; syscall"); }
const char *p = d->stdin_ptr;
const char *end = p + d->stdin_size;
char *o = d->stdout_ptr;
// parse 20 integers, print each sum on its own line
for (int i = 0; i < 10; i++) {
long a = 0, b = 0; int neg;
neg = 0;
if (*p == '-') { neg = 1; p++; }
while (p < end && *p >= '0' && *p <= '9') { a = a * 10 + (*p - '0'); p++; }
if (neg) a = -a;
while (p < end && (*p < '0' || *p > '9')) p++;
neg = 0;
if (*p == '-') { neg = 1; p++; }
while (p < end && *p >= '0' && *p <= '9') { b = b * 10 + (*p - '0'); p++; }
if (neg) b = -b;
while (p < end && (*p < '0' || *p > '9')) p++;
long s = a + b;
// itoa
char tmp[24]; int n = 0;
unsigned long u = s < 0 ? (unsigned long)(-s) : (unsigned long)s;
if (s == 0) tmp[n++] = '0';
while (u) { tmp[n++] = '0' + (u % 10); u /= 10; }
if (s < 0) tmp[n++] = '-';
while (n) *o++ = tmp[--n];
*o++ = '\n';
}
d->stdout_size = o - d->stdout_ptr;
__asm__ volatile("mov $60,%eax; xor %edi,%edi; syscall");
__builtin_unreachable();
}