We say that a odd number N is similar to 2017 when both N and (N+1)/2 are prime.

You are given Q queries.

In the i-th query, given two odd numbers l_i and r_i, find the number of odd numbers x similar to 2017 such that l_i ≤ x ≤ r_i.

Constraints

* 1≤Q≤10^5
* 1≤l_i≤r_i≤10^5
* l_i and r_i are odd.
* All input values are integers.

Input

Input is given from Standard Input in the following format:


Q
l_1 r_1
:
l_Q r_Q


Output

Print Q lines. The i-th line (1≤i≤Q) should contain the response to the i-th query.

Examples

Input

1
3 7


Output

2


Input

4
13 13
7 11
7 11
2017 2017


Output

1
0
0
1


Input

6
1 53
13 91
37 55
19 51
73 91
13 49


Output

4
4
1
1
1
2
import java.io.*;
import java.util.*;

public class Main {
  static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  static final int N = 100001;
  static int[] prefix;
  
	public static void main (String[] args) throws IOException {    
    boolean[] isPrime = new boolean[N]; // or use bitset for space
    isPrime[2] = true;
    for (int i = 3; i < N; i += 2) isPrime[i] = true;
    for (int i = 3; i < N; i += 2) {
      if (isPrime[i]) {
        if ((long) (i) * i >= N) continue;
        for (int j=i*i; j<N; j+=i) isPrime[j] = false;
      }
    }
    
    prefix = new int[N];
    int count = 0;
    
    for(int i = 1; i < N; i++) {
      int M = (i+1)/2;
      if(isPrime[i] && isPrime[M]) {
        count++;
      }
      prefix[i] = count;
    }
    
    int Q = Integer.parseInt(br.readLine());
    
    for(int i = 0; i < Q; i++) {
      String[] line = br.readLine().split(" ");
      int L = Integer.parseInt(line[0]);
      int R = Integer.parseInt(line[1]);
      
      int ans = prefix[R] - prefix[L-1];
      bw.write(ans + "\n");
    }
    
    bw.close();
	}
}
