Lật xu

Xem PDF

Điểm: 450 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

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\)\(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\).

Constants

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

Example

Test 1

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
Output
3
3 4 1

Bình luận

Không có bình luận nào.