import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import static java.util.Collections.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine());
long[] prefix = new long[N+1];
prefix[0] = 0;
for (int i = 1 ; i <= N; i++)
{
long num = Long.parseLong(st2.nextToken());
prefix[i] = prefix[i-1]+num;
}
for (int i = 0; i < M; i++)
{
StringTokenizer st3 = new StringTokenizer(br.readLine());
int first = Integer.parseInt(st3.nextToken());
int second = Integer.parseInt(st3.nextToken());
long total = prefix[second] - prefix[first-1];
sb.append(total+"\n");
}
System.out.println(sb);
}
}
맨 처음에는 입력받은 값들을 배열로 저장하여 반복문을 이용하여 풀려 하였지만 시간 초과가 발생하여 아예 입력받은 값들을 배열로 저장하는게 아니라 처음부터 누적합 배열을 만들어 누적합을 구한 후에 second번째 배열에서 first-1번째 배열을 빼서 그 범위의 누적합만 구하는 방식이었다. 신박하고 좋은 방식인 것 같다.