% Problem author: Sergey Kopeliovich
% Изначально задача создана для сборов в Харькове в феврале 2012 года

\begin{problem}{Жесть}{sqrtrev.in}{sqrtrev.out}{2 секунды}{256 мегабайт}{}

Дам массив из $N$ чисел. Нужно уметь обрабатывать 3 типа запросов:

$\circ$ \t{get(L, R, x)} --- сказать, сколько элементов отрезка массива $[L..R]$ не меньше $x$.

$\circ$ \t{set(L, R, x)} --- присвоить всем элементам массива на отрезке $[L..R]$ значение $x$.

$\circ$ \t{reverse(L, R)} --- перевернуть отрезок массива $[L..R]$.

\InputFile

Число $N$ ($1 \le N \le 10^5$) и массив из $N$ чисел.
Далее число запросов $M$ ($1 \le M \le 10^5$) и $M$ запросов.
Формат описания запросов предлагается понять из примера.
Для всех отрезков верно $1 \le L \le R \le N$.
Исходные числа в массиве и числа $x$ в запросах --- целые от $0$ до $10^9$.

\OutputFile

Для каждого запроса типа \t{get} нужно вывести ответ.

\Example

\begin{example}
\exmp{
5
1 2 3 4 5
6
get 1 5 3
set 2 4 2
get 1 5 3
reverse 1 2
get 2 5 2
get 1 1 2
}{
3
1
3
1
}%
\end{example}

\end{problem}
