현욱의 집 앞 정원에는 N(1≤N≤3⋅105) 그루의 나무가 있다. 나무의 높이는 1 이상 109 이하의 정수로 표현되며, 높이가 오름차순이 되게 심어져 있다. 즉, i번째 나무의 높이를 H_i 라고 했을 때 항상 H_i≤H_i+1 임이 보장된다.
현욱의 정원에 심긴 나무들 중에, 아래의 조건을 만족하는 나무는 하루가 지나면 높이가 1 증가하게 된다.
만약 이러한 조건을 만족하는 나무가 여러 그루라면, 그 중 가장 왼쪽에 있는 나무의 높이가 1 증가하게 된다. 즉, 매일 최대 한 그루의 나무만이 높이가 자라게 된다. 예를 들어, 현욱의 정원에 심긴 나무의 높이가 1,3,4,5,5,7 이었다고 하자. 바로 오른쪽 나무와의 높이 차이가 가장 작은 것은 높이 차이가 1인 2번째, 3번째 나무이다. 이 중에서 가장 왼쪽 나무는 2번째 나무이므로 이 나무의 높이가 1 자라게 된다.
현욱은 오늘로부터 K(1≤K≤1012)일 후에 가장 높이가 낮은 나무와 가장 높이가 높은 나무의 높이 차이가 얼마가 될 지 궁금해졌다. 현욱의 질문이 Q(1≤Q≤3⋅105)번 주어질 때, 각 질문에 대한 답을 출력하는 프로그램을 작성해보자.
첫 줄에 정원에 존재하는 나무의 수 N과 현욱이 할 질문의 수 Q가 주어진다. (1≤N,Q≤3⋅105)
둘째 줄에 정원에 심은 나무의 높이 H_i가 순서대로 공백으로 구분되어 N개 주어진다. 이 때 입력은 항상 H_i≤H_i+1을 만족한다(1≤H_i≤109)
셋째 줄부터 Q줄에 걸쳐 현욱의 질문이 주어진다. 질문으로 주어지는 모든 K는 1이상 1012 이하의 정수이다.
현욱의 각 질문에 대해, K일 후에 정원의 가장 높이가 높은 나무와 낮은 나무의 높이 차이를 출력한다.