Не сходится с ответом

У меня выводится все '-1', лишь в одном случае выдает 18. При введенных значениях, которые написаны в примере (ниже задача). А мне надо исключительно, чтобы выдавало 18. Как это сделать и где моя ошибка?

var
a: array[1..10000] of integer;
 N, i, j, x: integer;

begin
 x := -1;
readln(N);
for i := 1 to N do
   readln(a[i]);
 for i := 1 to N - 1 do
  for j := i + 1 to N do
 begin
   if ((a[i] + a[j]) mod 3 = 0) and ((i + j) mod 3 = 0) and ((a[i] + a[j]) > x) then 
    x := a[i] + a[j];
end;
for i := 1 to N - 1 do
for j := i + 1 to N do
  if ((a[i] + a[j]) mod 3 = 0) and ((i + j) mod 3 = 0) and ((a[i] + a[j]) >= x) then begin
    writeln(x);
  end
  else 
      writeln('-1');
end.

На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить такую максимальную сумму элементов пары, чтобы суммы элементов пары и их индексов были кратны 3. Если такой суммы не найдется, вывести «–1». Нумерация элементов начинается с 1. Описание входных и выходных данных В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 10000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10000. В качестве результата программа должна вывести одно число: максимальную сумму пары кратную трём с суммой индексов кратной трём или «–1», если такой пары не нашлось. Пример входных данных №1: 10 1 2 3 4 5 6 7 8 9 10 Выходные данных для приведенного выше примера: 18 найденная пара: (8; 10)


Ответы (1 шт):

Автор решения: Aziz Umarov

Уберите последние for i for j и оставьте тупо writeln(x); оно и так выведет -1 если таковых нет.

→ Ссылка