길이가 $N$인 수열 $A_1, A_2, \ldots, A_N$이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.
1 L R X: 모든 $L \le i \le R$에 대해서 $A_i = A_i \land X$ 를 적용한다.2 L R X: 모든 $L \le i \le R$에 대해서 $A_i = A_i \lor X$ 를 적용한다.3 L R: $\max(A_L, A_{L+1}, \ldots, A_R)$을 출력한다.
$\land$는 비트 AND, $\lor$는 비트 OR이다.
입력
첫째 줄에 수열의 크기 $N$이 주어진다. ($1 \le N \le 200{,}000$)
둘째 줄에는 $A_1, A_2, \ldots, A_N$이 주어진다. ($0 \le A_i < 2^{20}$)
셋째 줄에는 쿼리의 개수 $M$이 주어진다. ($1 \le M \le 200{,}000$)
넷째 줄부터 $M$개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. ($1 \le L \le R \le N$, $0 \le X < 2^{20}$) 3번 쿼리는 한 번 이상 주어진다.
출력
3번 쿼리의 결과를 한 줄에 하나씩 출력한다.
Sample
Input
5 1 3 2 5 4 8 3 1 3 2 1 1 5 3 1 3 1 1 4 6 2 3 4 1 3 2 3 2 2 3 4 3 1 5
Output
3 5 3 7
노트
수열의 변화는 다음과 같다.
- 1, 3, 2, 5, 4
- 5, 3, 2, 5, 4
- 5, 3, 2, 5, 4
- 4, 2, 2, 4, 4
- 4, 2, 3, 5, 4
- 4, 2, 3, 5, 4
- 4, 6, 7, 5, 4
- 4, 6, 7, 5, 4