Портальная пушка

아직 제출이 없습니다시간 제한4초메모리 제한1024 MB

문제

Рик прекрасно знает, что Морти нельзя доверять портальную пушку, но в последнее время Морти так надоел ему просьбами подарить ему собственную портальную пушку, что Рик сдался и сделал ему мини-версию.

Однако, чтобы Морти при этом как-то развивался (или просто чтобы ему было сложнее ее использовать), Рик сделал ее устройство достаточно запутанным. Всего на портальной пушке Морти есть nn параметров, каждый из которых может принимать значения от 'a' до 'z'. Обозначим параметр под номером ii за p_ip\_i.

За одно действие Морти может:

  • выбрать произвольный номер параметра ii от 11 до nn и изменить его значение на произвольное другое cc от 'a' до 'z';
  • выбрать два возможных значения c_1c\_1 и c_2c\_2 от 'a' до 'z' и заменить значение у всех параметров, текущее значение которых равно c_1c\_1, на c_2c\_2;
  • проверить, можно ли создать порталы в локациях с идентификаторами (l_1,r_1)(l\_1, r\_1) и (l_2,r_2)(l\_2, r\_2) (где l_1r_1l\_1 \leqslant r\_1 и l_2r_2l\_2 \leqslant r\_2) --- для этого набор параметров на позициях \[l_1,r_1]\[l\_1, r\_1] должен поэлементно совпадать с набором параметров на позициях \[l_2,r_2]\[l\_2, r\_2], то есть должно выполняться

{r_1l_1=r_2l_2 p_l_1+i=p_l_2+iдля всех 0ir_1l_1.\begin{cases} r\_1 - l\_1 = r\_2 - l\_2 \\\ p\_{l\_1 + i} = p\_{l\_2 + i} & \text{для всех } 0 \leqslant i \leqslant r\_1 - l\_1 \end{cases}\text{.}

Поскольку Морти не шибко умный, ему сложно быстро проверять наборы параметров на равенство, а случайно сломать портальную пушку не хотелось бы. Помогите ему для каждого действия третьего типа понять, может ли он создать порталы в желаемых локациях, или нет.

입력

В первой строке ввода дана строка pp длины nn, состоящая из маленьких латинских букв --- изначальные значения параметров пушки (1n21051 \leqslant n \leqslant 2 \cdot 10^5).

В следующей строке дано единственное целое число qq --- количество действий, которые совершает Морти (1q21051 \leqslant q \leqslant 2 \cdot 10^5).

В следующих qq строках перечислены описания действий:

  • <<1 ii cc>> --- присвоить ii-му параметру значение cc (1in1 \leqslant i \leqslant n; ’‘a‘’c’‘z‘’\text{'`a`'} \leqslant c \leqslant \text{'`z`'});
  • <<2 c_1c\_1 c_2c\_2>> --- заменить все значения всех параметров, равных c_1c\_1, на c_2c\_2 (’‘a‘’c_1,c_2’‘z‘’\text{'`a`'} \leqslant c\_1, c\_2 \leqslant \text{'`z`'});
  • <<3 l_1l\_1 r_1r\_1 l_2l\_2 r_2r\_2>> --- проверить возможность создания порталов в локациях (l_1,r_1)(l\_1, r\_1) и (l_2,r_2)(l\_2, r\_2) (1l_1,r_1,l_2,r_2n1 \leqslant l\_1, r\_1, l\_2, r\_2 \leqslant n; l_1r_1l\_1 \leqslant r\_1; l_2r_2l\_2 \leqslant r\_2).

출력

На каждое действие третьего типа выведите в отдельной строке <<YES>> (без кавычек), если Морти может его выполнить, и <<NO>> иначе.