Lật xu

Xem PDF

Nộp bài


Điểm: 25 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 256M

Tác giả:
Dạng bài

Cho \(n\) đồng xu xếp thành một hàng (và đánh số từ \(1\) đến \(n\)) trên cỗ máy kỳ diệu, mỗi đồng xu đều đang được đặt ngửa lên trên hoặc úp xuống dưới. Có \(m\) nút bấm, bấm vào nút thứ \(i\) thì cỗ máy kỳ diệu sẽ lật ngược \(l_i\) đồng xu \(b_1\), \(b_2\),..., \(b_{l_i}\). Hãy lập trình tìm một cách bấm để đưa tất cả các đồng xu về mặt úp. Dữ liệu đảm bảo luôn tồn tại một cách bấm thỏa mãn.


Input

  • Dòng đầu chứa hai số nguyên dương \(n\) và \(m\).
  • Dòng tiếp theo chứa \(n\) số \(0\) hoặc \(1\) mô tả trạng thái ngửa hay úp của từng đồng xu. \(0\) thể hiện trạng thái ngửa, \(1\) thể hiện trạng thái úp.
  • Dòng thứ \(i\) trong \(m\) dòng tiếp theo bắt đầu bằng \(l_i\) và theo sau bởi các chỉ số phân biệt \(b_1\), \(b_2\),..., \(b_{l_i}\).

Output

  • Dòng đầu in ra \(k\) là số lượng thao tác.
  • Dòng tiếp theo in ra \(k\) số nguyên lần lượt là số hiệu của nút mà ta cần bấm.
  • Bài làm của bạn sẽ bị tính là "Kết quả sai" / "Wrong answer" nếu \(k > m\).

Ví dụ

Sample input
6 5
0 0 0 0 0 0
3 2 4 6
5 1 2 3 4 5
3 2 3 5
2 1 2
2 2 6
Sample output
3
3 4 1

Ràng buộc

  • \(n\leq 10^4\).
  • \(m\leq 25\).
  • \(l_i\leq n\) với mọi \(1\leq i\leq m\).