Trong thiết kế hệ thống, kiểm thử là một giai đoạn vô cùng quan trọng. ~\textbf{Quân}~ đang thiết kế một máy theo nguyên lí máy Turing, tức là thực hiện các thao tác trên một băng ghi bộ nhớ; và máy của anh đang trong giai đoạn kiểm thử.
Băng ghi bộ nhớ của ~\textbf{Quân}~ có thể coi là một dãy ~n~ bit được đánh số từ ~1~ đến ~n~. Từ trái sang phải, mỗi bit ban đầu có một trạng thái xác định. Để kiểm tra máy, người ta lần lượt thực hiện các truy vấn thuộc trong hai loại:
+ ~1~ ~l~ ~r~: Chuyển trạng thái các bit từ bit thứ ~l~ đến bit thứ ~r~ (~0~ thành ~1~ và ~1~ thành ~0~).
+ ~2~ ~x~ ~y~ ~z~ ~t~: Kiểm tra xem hai dãy nhị phân con từ ~x~ đến ~y~ và từ ~z~ đến ~t~ có giống nhau không?
Yêu cầu: Bạn hãy giúp ~\textbf{Quân}~ kiểm tra máy của anh bằng cách trả lời các truy vấn loại ~2~ nhé!
Input
Dòng đầu tiên chứa xâu nhị phân ~S~ ~(|S| \le 10^{5})~ mô tả trạng thái băng nhớ ban đầu.
Dòng thứ hai chứa số nguyên dương ~q~ ~( 1 \le q \le 10^{5})~ là số truy vấn.
~q~ dòng tiếp theo mỗi dòng thuộc một trong hai dạng:
~1~ ~l~ ~r~ : ~(1 \le l \le r \le |S|)~ .
~2~ ~x~ ~y~ ~z~ ~t~ :~(1 \le x \le y \le |S| ,1 \le z \le t \le |S|)~
Output
In ra nhiều dòng theo thứ tự là đáp án của truy vấn loại ~\textbf{2}~ tương ứng:
Nếu hai dãy là giống nhau, in ra "YES", ngược lại in ra "NO".
Scoring
Subtask ~1~ (~15~ điểm): ~1 \le |S| , q \le 1000~.
Subtask ~2~ (~25~ điểm): Các truy vấn loại ~1~ xảy ra trước loại ~2~.
Subtask ~3~ (~60~ điểm): Không có điều kiện gì thêm.
Sample Input 1
01101011
5
1 3 4
2 2 3 5 6
1 1 8
2 1 5 2 7
2 1 2 7 8
Sample Output 1
YES
NO
NO
Notes
Sau truy vấn thứ nhất, xâu ~S~ trở thành ~01011011~.
Trong truy vấn thứ hai, dãy con từ ~2~ đến ~3~ bằng ~10~, dãy con từ ~5~ đến ~6~ bằng ~10~.
Sau truy vấn thứ ba, xâu ~S~ trở thành ~10100100~
Trong truy vấn thứ tư, dãy con từ ~1~ đến ~5~ bằng ~10100~, dãy con từ ~2~ đến ~7~ bằng ~0100100~.
Bình luận