쿼리 맛보기

길이 n인 수열에 대해 q개의 질의를 처리한다. 1번 질의는 구간 합을 출력한 뒤 두 위치를 교환하고, 2번 질의는 두 구간 합의 차를 출력한다.

보통4배열누적 합구현시뮬레이션면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

비슷한 형태의 질문이 여러 개 주어지는 문제를 쿼리 문제라고 부른다. 쿼리 문제는 주어진 순서대로 쿼리를 실행해서 풀 수도 있고, 그것이 불가능하거나 조건이 맞는 경우에는 쿼리 순서를 임의로 바꿔서 더 편하게 풀 수도 있다.

이 문제에서는 길이 nn인 수열과 qq개의 쿼리가 주어진다. 쿼리는 두 종류다.

  • 1 a b: 구간 [a,b][a, b]의 합을 출력한 뒤, 수열의 aa번째 수와 bb번째 수를 서로 바꾼다.
  • 2 a b c d: 구간 [a,b][a, b]의 합에서 구간 [c,d][c, d]의 합을 뺀 값을 출력한다.

구간 [a,b][a, b]의 합은 수열의 aa번째 수부터 bb번째 수까지 모두 더한 값이다. 1번 쿼리는 수열을 바꾸므로, 쿼리는 입력에 주어진 순서대로 처리한다.

입력

첫째 줄에 수열의 길이 nn(1n10001 \le n \le 1000)과 쿼리의 개수 qq(1q100001 \le q \le 10000)가 주어진다.

둘째 줄에 수열의 수 nn개가 공백 하나를 사이에 두고 주어진다. 각 수는 2147483648-2147483648 이상 21474836472147483647 이하의 정수이다.

셋째 줄부터 qq개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 쿼리의 형식은 1 a b 또는 2 a b c d이다. aa, bb, cc, ddnn 이하의 자연수이고, aba \le bcdc \le d가 보장된다.

출력

각 쿼리의 답을 주어진 순서대로 한 줄에 하나씩, 모두 qq개의 줄에 출력한다.