Почти на каждом проекте компании F работает целая команда разработчиков. Часто они находятся в разных комнатах офиса, в разных городах и даже странах. Чтобы поддерживать связь и следить за результатами на проекте, компания F устраивает коллективные онлайн митинги в Spyke чате.
Как-то раз к директору компании F попала запись части онлайн митинга одной из успешных команд. Просмотрев запись, директор захотел поговорить с лидером команды. Но как определить, кто лидер? Директор логично предположил, что лидер — это такой человек, который присутствует при любом разговоре на митинге в чате. Другими словами, если в какой-то момент времени хотя бы один человек присутствует на митинге, то лидер присутствует на митинге.
Вы — помощник директора. По заданным сообщениям о подключениях/отключениях людей на митинге в хронологическом порядке, помогите директору определить, кто может являться лидером? Обратите внимание, что у директора есть запись только непрерывной части митинга (возможно, не весь митинг).
В первой строке записаны целые числа n и m (1 ≤ n, m ≤ 105) — количество участников команды и количество сообщений. В каждой из следующих m строк записано сообщение в формате:
Считайте, что все люди команды пронумерованы от 1 до n, а сообщения заданы в хронологическом порядке. Гарантируется, что заданная последовательность является корректной записью непрерывной части митинга. Гарантируется, что никакие два события подключения/отключения не произошли одновременно.
В первой строке выведите целое число k (0 ≤ k ≤ n) — количество людей, которые могут быть лидерами. В следующей строке выведите k целых чисел в возрастающем порядке — номера людей, которые могут быть лидерами.
Если данные таковы, что ни один человек команды не может являться лидером, выведите единственное число 0.
5 4
+ 1
+ 2
- 2
- 1
4
1 3 4 5
3 2
+ 1
- 2
1
3
2 4
+ 1
- 1
+ 2
- 2
0
5 6
+ 1
- 1
- 3
+ 3
+ 4
- 4
3
2 3 5
2 4
+ 1
- 2
+ 2
- 1
0
Название |
---|