Найдите выброс
Профессор Абакус недавно создал новый вычислительный двигатель для составления числовых таблиц. Этот двигатель предназначен для одновременного вычисления значений полиномиальной функции одной переменной в нескольких точках. Например, для полиномиальной функции f(x)=x^2+2x+1 ожидаемые результаты могут быть: 1 (= f(0)), 4 (= f(1)), 9 (= f(2)), 16 (= f(3)) и 25 (= f(4)).
Однако, к сожалению, двигатель имеет дефектные компоненты, и одно из вычисленных значений всегда оказывается неверным. Например, для той же полиномиальной функции он может выдать 1, 4, 12, 16 и 25 вместо 1, 4, 9, 16 и 25.
Ваша задача — помочь профессору обнаружить неисправные компоненты. На первом этапе вам нужно написать программу, которая анализирует результаты вычислений двигателя и определяет неверное значение.
Входные данные
Входные данные состоят из нескольких наборов, каждый из которых представляет результаты вычислений в следующем формате.
d
v_0
v_1
...
v_{d+2}
Здесь d в первой строке — это положительное целое число, обозначающее степень полинома, то есть наивысшую степень переменной. Например, степень 4x^5+3x+0.5 равна пяти, а степень 2.4x+3.8 равна единице. d не превышает пяти.
Следующие d+3 строки содержат результаты вычислений f(0), f(1), ..., и f(d+2) в этом порядке, где f — это полиномиальная функция. Каждая строка содержит десятичную дробь в диапазоне от -100.0 до 100.0, исключая границы.
Можно предположить, что неверное значение, которое является ровно одним из f(0), f(1), ..., и f(d+2), имеет ошибку, превышающую 1.0. Поскольку ошибки округления неизбежны, другие значения также могут иметь ошибки, но они малы и никогда не превышают 10^{-6}.
Конец ввода обозначается строкой, содержащей ноль.
Выходные данные
Для каждого набора данных выведите i в строке, если v_i неверно.