Олимпиадный тренинг

Задача . D. Yui и маджонг


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

Yui девочка, которая очень любит играть в маджонг.

 

У нее есть таинственный набор, который состоит из нескольких плиток (этот набор может быть пустым). Каждая плитка содержит целое число от \(1\) до \(n\) и не больше, чем \(n\) плиток в множестве имеют одинаковое значение. Таким образом, в множество содержит не больше, чем \(n^2\) плиток.

Вы хотите узнать, какие числа написаны на плитках в множестве. Для этого Yui хочет сыграть с вами в игру.

Давайте назовем множество, состоящее из трех плиток равной тройкой, если значения на плитках одинаковые. Например, \(\{2,\,2,\,2\}\) это равная тройка, а \(\{2,\,3,\,3\}\) нет.

Давайте назовем множество, состоящее из трех плиток последовательной тройкой, если значения на плитках последовательные целые числа. Например, \(\{2,\,3,\,4\}\) это последовательная тройка, а \(\{1,\,3,\,5\}\) нет.

Сначала, Yui называет вам количество подмножеств плиток, которые являются равными тройками и количество подмножеств плиток, которые являются последовательными тройками в ее множестве плиток. После этого, вы можете добавить плитку с целым числом от \(1\) до \(n\) в множество не более, чем \(n\) раз. Каждый раз добавляя плитку, в ответ вы получите количество подмножеств плиток в текущем множестве плиток, которые являются равными тройками и количество подмножеств плиток в текущем множестве плиток, которые являются последовательными тройками.

Обратите внимание, что любые две различные плитки с одинаковым значением считаются различными. Другими словами, в множестве \(\{1,\,1,\,2,\,2,\,3\}\) вы можете найти \(4\) подмножества \(\{1,\,2,\,3\}\).

Угадайте количество плиток в изначальном множестве с числом \(i\) для всех целых чисел \(i\) от \(1\) до \(n\).

Входные данные

В первой строке находится единственное целое число \(n\) (\(4 \le n \le 100\)).

Во второй строке находится два целых числа, равные количеству подмножеств плиток, которые являются равными тройками и количеству подмножеств плиток, которые являются последовательными тройками в изначальном множестве плиток.

Выходные данные

Когда ваша программа будет готова ответить, выведите строку в формате «! \(a_1\) \(a_2\) \(\ldots\) \(a_n\)» (\(0 \le a_i \le n\)), где \(a_i\) будет равно количеству плиток в изначальном множестве с числом \(i\).

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

Для того, чтобы добавить плитку в множество, выведите строку в формате «+ \(x\)» (\(1 \le x \le n\)), где \(x\) равно числу, которое будет на плитке, которую вы добавляете. В ответ вы должны считать два целых числа, равных количеству подмножеств плиток, которые являются равными тройками и количеству подмножеств плиток, которые являются последовательными тройками в текущем множестве плиток.

После вывода строки с запросом добавления плитки или строки с ответом не забывайте сбрасывать буфер вывода. Иначе ваше решение получит вердикт Idleness limit exceeded.

Для того, чтобы сделать это, используйте:

  • fflush(stdout) или cout.flush() в C++;
  • System.out.flush() в Java;
  • flush(output) в Pascall;
  • stdout.flush() в Python;
  • обратитесь к документации для остальных языков.

Вы получите вердикт Wrong answer, если вы добавите больше, чем \(n\) плиток в множество.

Взломы

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

В первой строке находится единственное целое число \(n\) (\(4 \le n \le 100\)).

Во второй строке находится \(n\) целых чисел \(a_1,a_2,\ldots,a_n\) (\(0 \le a_i \le n\))  — \(a_i\) равно количеству плиток с числом \(i\) в множестве.

Примечание

В первом тесте, изначальное множество плиток \(\{1, 1, 2, 3, 3, 3, 5, 5\}\). Оно содержит одну равную тройку \(\{3, 3, 3\}\) и шесть последовательных троек, которые все равны \(\{1, 2, 3\}\). После добавления в множество плитки со значением \(1\) множество плиток станет \(\{1, 1, 1, 2, 3, 3, 3, 5, 5\}\) и будет содержать две равные тройки \(\{1, 1, 1\}\), \(\{3, 3, 3\}\) и девять последовательных троек, которые все равны \(\{1, 2, 3\}\).


Примеры
Входные данныеВыходные данные
1 5
1 6
2 9
5 12
5 24
6 24
+ 1
+ 1
+ 2
+ 5
! 2 1 3 0 2

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя