홍준이는 색칠을 좋아해

벽돌의 초기 색은 번호와 같고 색의 화려함은 0에서 시작한다. 구간을 한 색으로 칠하면 각 벽돌의 화려함이 색 변화의 절댓값만큼 늘어나며, 구간 합을 묻는 질의에 답한다.

어려움8세그먼트 트리구현수학동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

홍준이는 색칠을 좋아한다.

홍준이는 생일 선물로 벽돌 nn개를 받아 일렬로 늘어놓았다. 가장 왼쪽 벽돌이 1번이고, 오른쪽으로 갈수록 번호가 1씩 커져서 가장 오른쪽 벽돌이 nn번이다. 처음에 ii번 벽돌의 색은 ii번 색이고, 모든 벽돌의 다채도는 0이다.

홍준이는 연속한 벽돌 구간에 같은 색을 칠한다. ii번 벽돌의 현재 색이 yy인데 홍준이가 색 xx로 칠하면, 그 벽돌의 다채도는 xy|x-y|만큼 늘어나고 색은 xx가 된다.

홍준이는 작업을 mm번 한다. 작업은 다음 두 가지 중 하나다.

  1. LL번 벽돌부터 RR번 벽돌까지 색 XX로 칠한다.
  2. LL번 벽돌부터 RR번 벽돌까지의 다채도 합을 구한다.

홍준이를 도와주는 프로그램을 작성하시오.

입력

첫째 줄에 벽돌의 개수 nn과 작업의 수 mm이 주어진다. (1n,m1000001 \le n, m \le 100\,000)

다음 mm개 줄에는 작업이 한 줄에 하나씩 주어진다. 각 줄은 작업의 종류를 나타내는 정수 TypeType(1 또는 2)으로 시작한다.

TypeType이 1이면 작업 1을 나타내는 정수 LL, RR, XX가 이어서 주어진다. (1LRn1 \le L \le R \le n, 1X1000000001 \le X \le 100\,000\,000)

TypeType이 2이면 작업 2를 나타내는 정수 LL, RR가 이어서 주어진다. (1LRn1 \le L \le R \le n)

출력

작업 2를 수행할 때마다 그 구간의 다채도 합을 한 줄에 하나씩, 작업 순서대로 출력한다.