I. Сложение
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Это интерактивная задача.

Инженер Поликарп работает в компании «Абак». Каждый день он должен придумывать N двоичных строк длины M. В один из таких дней он решил разнообразить свой рабочий процесс: после того как Поликарп придумывает очередную строку, он интерпретирует её как двоичное число (возможно, c ведущими нулями), поочерёдно складывает его с каждым ранее придуманным числом, и подсчитывает сколько раз результат сложения не поместился в двоичное число длины M.

Поликарп очень плохо складывает числа, поэтому он просит вас помочь ему.

Протокол взаимодействия

В первой строке программа жюри передает два целых числа N и M (1 ≤ N × M ≤ 105) — количество придуманных Поликарпом двоичных строк и длину этих строк соответственно.

Далее N раз происходит следующeе: программа жюри в отдельной строке передаёт вашей программе очередное придуманное Поликарпом двоичное число, состоящее ровно из M бит, а ваша программа в отдельной строке должна выдать одно целое число — количество раз, когда при сложении данного числа и ранее переданных вам двоичных чисел результат не поместился в двоичное число длины M.

После обработки N запросов ваша программа обязана завершиться с кодом завершения 0. В противном случае результатом взаимодействия будет ошибка (даже если все ответы, выданные вашей программой, были правильными).

Примеры
Входные данные
5 2
01
10
11
00
10
Выходные данные
0
0
2
0
2
Входные данные
5 3
110
001
101
110
011
Выходные данные
0
0
1
2
3
Примечание

Для корректной работы программы после каждой операции вывода данных вам необходимо очищать буфер вывода, то есть делать следующие операции:

  • В языке Pascal: flush(output);
  • В С/С++: fflush(stdout) или cout.flush();
  • В Java: System.out.flush();
  • В Python: sys.stdout.flush() из библиотеки sys;
  • В C#: Console.Out.Flush();

Также не забудьте выводить перевод строки после каждого ответа вашей программы.