포털 대포
시간 제한4초메모리 제한1024 MB
문자열에 한 글자 변경과 전체 글자 치환 연산이 주어질 때, 두 구간의 문자열이 같은지 매 질의마다 판별합니다.
문제
릭은 모티에게 포털 대포를 맡기면 안 된다는 것을 잘 알고 있다. 하지만 모티가 자기만의 포털 대포를 달라고 너무 오래 졸라서, 결국 릭은 미니 버전을 만들어 주기로 했다.
모티가 성장하도록 하려는 것인지(또는 그냥 사용하기 어렵게 만들려는 것인지) 릭은 장치를 꽤 복잡하게 만들었다. 포털 대포에는 개의 매개변수가 있고, 각 매개변수는 'a'부터 'z'까지의 값을 가진다. 번째 매개변수를 로 표기한다.
한 번의 동작으로 모티는 다음을 할 수 있다.
- 부터 까지의 번호 를 골라 그 값을 'a'부터 'z'까지의 다른 값 로 바꾼다.
- 'a'부터 'z'까지의 두 값 과 를 골라, 현재 값이 인 모든 매개변수의 값을 로 바꾼다.
- 위치 과 에서 포털을 만들 수 있는지 확인한다(단, , ). 이를 위해 구간의 매개변수가 구간의 매개변수와 원소별로 같아야 하며, 다음 조건이 성립해야 한다.
모티는 그리 영리하지 않아서 매개변수 열을 빠르게 비교하기 어렵고, 실수로 포털 대포를 망가뜨리고 싶지도 않다. 세 번째 종류의 동작마다 요청한 위치에서 포털을 만들 수 있는지 판단하라.
입력
첫 줄에 길이가 이고 작은 라틴 문자로만 이루어진 문자열 가 주어진다. 이는 대포 매개변수의 초기 값이다().
다음 줄에는 모티가 수행하는 동작의 개수 가 정수 하나로 주어진다().
이어지는 개의 줄에 동작이 주어진다.
1: 번째 매개변수의 값을 로 설정한다(; 'a' 'z').2: 모든 매개변수 중 값이 인 것을 전부 로 바꾼다('a' 'z').3: 위치 과 에서 포털을 만들 수 있는지 확인한다(; ; ).
출력
세 번째 종류의 동작마다 모티가 포털을 만들 수 있으면 YES, 없으면 NO를 각각 한 줄에 출력한다.