원래 배열을 a, a의 차로 만든 배열을 b (b[i]=a[i]-a[i+1]), b의 차로 만든 배열을 c (c[i]=b[i]-b[i+1]) 이라고 하고, 대충 a3부터 a6까지 초항이 x 공차가 y인 수열을 더한다고 해보자.
(보통은 b의 누적합으로 a원소를 복구할 수 있도록, b[0]=a[0], b[i]=a[i]-a[i-1],.. 형태로 만들곤 했지만, 이번에는 쿼리를 처리할때 a[0]의 값이 필요 없으므로 평소와 다르게 정의했다.)
A는 [a1, a2, a3+x, a4+x+y, a5+x+2y, a6+x+3y, a7, a8, a9] 이 되고
B는 [b1, b2-x, b3-y, b4-y, b5-y, b6+x+3y, b7, b8] 이 되고
C는 [c1+x, c2-x+y, c3, c4, c5-y-x-3y, c6+x+3y, c7] 이 된다.
일반화하면, a[l]부터 a[r]까지 초항이 x 공차가 y인 수열을 더하는 것은, c기준에서는 다음처럼 4개의 원소를 업데이트 해주는 것이 된다
c[l-2] += x
c[l-1] += -x+y
c[r-1] += -x-(r-l+1)y
c[r] += x+(r-l)y