#include using namespace std; #define PB push_back #define ZERO (1e-10) #define INF int(1e9+1) #define CL(A,I) (memset(A,I,sizeof(A))) #define DEB printf("DEB!\n"); #define D(X) cout<<" "<<#X": "<B&&A-ZERO pll; typedef vector vi; typedef pair ii; typedef vector vii; #define IN(n) int n;scanf("%d",&n); #define FOR(i, m, n) for (int i(m); i < n; i++) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define FT(m, n) FOR(k, m, n) #define aa first #define bb second void ga(int N,int *A){F(N)scanf("%d",A+i);} #define MX (1<<18) int C[MX]; int gc(int a){return C[a]=(a==C[a]?a:gc(C[a]));} bool con(int a,int b){ if(gc(a)==gc(b))return 0; C[C[b]]=C[a]; return 1; } #define CLR(X,Y) iota(C+X,C+Y+1,X) ll S; int N,M,a,b,A[MX],B[MX]; int main(void){ scanf("%d%d",&N,&M); F(M)scanf("%d%d",A+i,B+i),--A[i],--B[i]; IN(_)F(_){ scanf("%d%d",&a,&b),--a,--b,S=0; FT(a,b+1){ CLR(0,N-1); FOR(j,k,b+1&&con(A[j],B[j]))++S; } printf("%lld\n",S); } return 0; }