import java.util.*;
// 存储add中的x, c; query中的l, r
class Pair {
int x, y;
Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
public class Main {
public static void main(String[] args) {
List<Pair> add = new ArrayList(); // 在x位置加c
List<Pair> query = new ArrayList(); // 询问[l, r]区间和
Set<Integer> set = new TreeSet(); // 涉及到的位置 x, l, r
Map<Integer, Integer> map = new HashMap(); // 将位置映射到[1, n]
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
for (int i = 0; i < n; i++) {
int x = scan.nextInt();
int c = scan.nextInt();
add.add(new Pair(x, c)); // 输入x, c
set.add(x); // 坐标x加入有序set
}
for (int i = 0; i < m; i++) {
int l = scan.nextInt();
int r = scan.nextInt();
query.add(new Pair(l, r)); // 输入l, r
set.add(l); // 坐标l, r加入set
set.add(r);
}
int index = 1;
for (int x : set) {
map.put(x, index++); // 将坐标映射到[1, n]
}
int k = set.size();
int[] nums = new int[k + 1];
int[] sum = new int[k + 1];
// 坐标x映射到index,给num[index]加上c
for (int i = 0; i < n; i++) {
Pair p = add.get(i);
index = map.get(p.x);
nums[index] += p.y;
}
// 求区间和
for (int i = 1; i <= k; i++) {
sum[i] = sum[i - 1] + nums[i];
}
// 将询问映射到[1, n]的坐标,求解区间和
for (int i = 0; i < m; i++) {
int l = query.get(i).x;
int r = query.get(i).y;
int ans = sum[map.get(r)] - sum[map.get(l) - 1];
System.out.println(ans);
}
}
}