Я думаю, вам следует заменить
sprintf(command, "%d", a1);
на
sprintf(command, "%lld", a1);
Использование неправильного спецификатора формата - неопределенное поведение.AFAIK, использование %d
в качестве спецификатора формата в gcc заставляет выводить только 32 бита, что приводит к тому, что в вашем выходном файле происходит переполнение.