Đảo ngược mảng

View as PDF

Submit solution

Points: 0.10
Time limit: 1.0s
Memory limit: 64M
Input: stdin
Output: stdout

Author:
Problem type

Sau khi học trên các lớp traning về hàm và chương trình con thì các bạn sinh viên muốn làm nhiều bài tập về chủ đề này hơn để thuần thạo khả năng code của mình.

Ở bài này, bạn nhận được một mảng có N phần tử và Q thao tác đảo ngược mảng.

Thao tác đảo ngược mảng được hiểu như sau:

Ở mỗi thao tác, bạn sẽ nhận được hai số là L và R đại diện cho đoạn mảng con từ phần tử thứ L đến phần tử thứ R. Sau đó, bạn phải thay đổi đoạn mảng con đó bằng cách đảo ngược lại để được thứ tự mới.

Ví dụ:

Đoạn mảng con đó là A[L], A[L+1], ... A[R-1], A[R] thì đoạn mảng con đó sẽ được đảo ngược lại thứ tự là: A[R], A[R-1], ...A[L+1], A[L].

Do có nhiều thao tác nên bạn phải bắt buộc đảo ngược mảng theo thứ tự lần lượt Q thao tác đấy, có nghĩa là phải đạo được đoạn L1, R1 -> L2,R2...->LQ, RQ.

Thực hiện xong bạn in ra mảng với thứ tự cuối cùng đạt được

Input

Dòng đầu tiên chứa hai số nguyên N (N ≤ ~10^5~) và Q (Q ≤ ~100~) đại diện cho số lượng phần tử mảng và Q thao tác.

Dòng thứ hai chứ N số nguyên dương (A[i] ≤ ~10^9~ ).

Q dòng tiếp theo chứa hai số nguyên Li, Ri để mô tả đoạn mảng con thứ i cần phải đảo có thứ tự từ L -> R (1 ≤ L < R ≤ N).

Output

In ra một dòng duy nhất các giá trị mảng với thứ tự được thay đổi sau cùng.

Examples

Input

5 2
1 2 3 4 5
2 4
4 5

Output

1 4 3 5 2

*Giải thích: * Thứ tự mảng sau khi đổi từ vị trí 2 đến 4 là: 1 4 3 2 5. Sau đó đổi tiếp tục từ vị trí 4 đến 5 sẽ được: 1 4 3 5 2.

Gợi ý: Có thể áp dụng chương trình con để viết với chức năng đảo thứ tự từ phần tử thứ L-> R, và mỗi lần nhập L, R thì ta gọi hàm để thực hiện.


Comments

Please read the guidelines before commenting.


There are no comments at the moment.