Cho một dãy \(n\) số nguyên dương \(a = (a_1, a_2, ..., a_n)\), sau đó thực hiện tuần tự các bước sau đây để mã hóa dữ liệu:
-
Cắt dãy \(a\) thành các dãy con liên tiếp, rời nhau.
-
Với mỗi dãy con, độ dài của dãy con được chèn thêm ngay phía sau hoặc phía trước dãy con đó.
Sau khi thực hiện 2 bước trên, một dãy \(b\) sẽ được tạo ra. Dãy \(b\) chính là kết quả sau khi mã hóa dãy \(a\).
Ví dụ, cho dãy \(a = (2,8,3)\). Giả sử dãy \(a\) được cắt thành 2 dãy con gồm (2) và (8,3), khi đó các dãy \(b\) có thể được tạo ra là: \(b = (1,2,8,3,2)\), \(b= (1,2,2,8,3)\), \(b = (2,1,8,3,2)\), \(b = (2,1,2,8,3)\).
Yêu cầu
Cho dãy \(b\), hãy kiểm tra xem có tồn tại hay không dãy \(a\) có thể mã hóa thành dãy \(b\) theo cách như trên?
Dữ liệu vào
Từ tệp văn bản DECODE.INP có cấu trúc như sau:
-
Dòng 1 chứa một số nguyên dương \(k\), là số bộ dữ liệu \((1 \le k \le 10^3)\).
-
Trong \(2 \times k\) dòng tiếp theo, mỗi cặp dòng biểu diễn một bộ dữ liệu, trong đó:
-
Dòng thứ nhất chứa một số nguyên dương \(m (2 \le m \le 10^5)\).
-
Dòng thứ hai chứa \(m\) số nguyên dương \(b_i (1 \le b_i \le 10^9)\), trong đó hai số liên tiếp cách nhau bởi ít nhất một dấu cách trống.
Kết quả
Ghi ra tệp văn bản DECODE.OUT gồm các dòng theo thứ tự tương ứng với các bộ dữ liệu, trong đó ghi “YES” nếu bộ dữ liệu tồn tại dãy \(a\) và ghi “NO” nếu bộ dữ liệu không tồn tại dãy \(a\).
Ví dụ
DECODE.INP | DECODE.OUT |
---|---|
2 6 7 9 2 2 7 3 4 7 2 9 2 |
YES NO |