//package competitive.coding;
 
import java.util.*;
 /******************************************
*    AUTHOR:         AMAN KUMAR SINGH        *
*    INSTITUITION:   KALYANI GOVERNMENT ENGINEERING COLLEGE  *
******************************************/
class CompetitiveCoding{
    static long modInverse(long a, long m){
        long m0 = m;
        long y = 0, x = 1;
        if (m == 1)
            return 0;
        while (a > 1)
        {
            long q = a / m;
            long t = m;
            m = a % m;
            a = t;
            t = y;
            y = x - q * y;
            x = t;
        }
        if (x < 0)
            x += m0;
        return x;
    }
    public static void main (String[] args) throws java.lang.Exception{
        Scanner in = new Scanner(System.in);
        long MOD_VAL=1000000007;
        int t=in.nextInt();
        while(t-->0){
            long n=in.nextLong();
            int q=in.nextInt();
            while(q-->0){
                long l=in.nextLong();
                long r=in.nextLong();
                long sum=0;
                if(n%2==0){
                    long x=n/2;
                    if(l<=x && r<=x){
                        long first_term=(2*l-1)%MOD_VAL;
                        long last_term=(2*r-1)%MOD_VAL;
                        long no_of_terms=r-l+1;
                        sum=((no_of_terms%MOD_VAL)*((first_term+last_term)%MOD_VAL))%MOD_VAL;
                        sum=(sum*modInverse(2,MOD_VAL))%MOD_VAL;
                    }
                    else if(l>=x && r>=x){
                        long first_term=(2*(l-n/2))%MOD_VAL;
                        long last_term=(2*(r-n/2))%MOD_VAL;
                        long no_of_terms=r-l+1;
                        sum=((no_of_terms%MOD_VAL)*((first_term+last_term)%MOD_VAL))%MOD_VAL;
                        sum=(sum*modInverse(2,MOD_VAL))%MOD_VAL;
                    }
                    else{
                        long sum1=0,sum2=0;
                        long first_term1=(2*l-1)%MOD_VAL;
                        long last_term1=(2*(n/2)-1)%MOD_VAL;
                        long no_of_terms1=n/2-l+1;
                        sum1=((no_of_terms1%MOD_VAL)*((first_term1+last_term1)%MOD_VAL))%MOD_VAL;
                        sum1=(sum1*modInverse(2,MOD_VAL))%MOD_VAL;
                        long first_term2=2;
                        long last_term2=(2*(r-n/2))%MOD_VAL;
                        long no_of_terms2=r-x;
                        sum2=((no_of_terms2%MOD_VAL)*((first_term2+last_term2)%MOD_VAL))%MOD_VAL;
                        sum2=(sum2*modInverse(2,MOD_VAL))%MOD_VAL;
                        sum=(sum1+sum2)%MOD_VAL;
                    }
                }
                else{
                    long x=n/2+1;
                    if(l<=x && r<=x){
                        long first_term=(2*l-1)%MOD_VAL;
                        long last_term=(2*r-1)%MOD_VAL;
                        long no_of_terms=r-l+1;
                        sum=((no_of_terms%MOD_VAL)*((first_term+last_term)%MOD_VAL))%MOD_VAL;
                        sum=(sum*modInverse(2,MOD_VAL))%MOD_VAL;
                    }
                    else if(l>x && r>=x){
                        long first_term=(2*(l-x))%MOD_VAL;
                        long last_term=(2*(r-x))%MOD_VAL;
                        long no_of_terms=r-l+1;
                        sum=((no_of_terms%MOD_VAL)*((first_term+last_term)%MOD_VAL))%MOD_VAL;
                        sum=(sum*modInverse(2,MOD_VAL))%MOD_VAL;
                    }
                    else{
                        long sum1=0,sum2=0;
                        long first_term1=(2*l-1)%MOD_VAL;
                        long last_term1=(2*x-1)%MOD_VAL;
                        long no_of_terms1=x-l+1;
                        sum1=((no_of_terms1%MOD_VAL)*((first_term1+last_term1)%MOD_VAL))%MOD_VAL;
                        sum1=(sum1*modInverse(2,MOD_VAL))%MOD_VAL;
                        long first_term2=2;
                        long last_term2=(2*(r-x))%MOD_VAL;
                        long no_of_terms2=r-x;
                        sum2=((no_of_terms2%MOD_VAL)*((first_term2+last_term2)%MOD_VAL))%MOD_VAL;
                        sum2=(sum2*modInverse(2,MOD_VAL))%MOD_VAL;
                        sum=(sum1+sum2)%MOD_VAL;
                    }
                }
                System.out.println(sum);
            }
        }
    }
}