/*
Code By : Amrutansu Garanaik
codechef id : dragonemperor
*/
#include<stdio.h>
#define MOD 1000000007
typedef long long ll;
ll n;
void multiply(ll a[n][n],ll b[n][n]) //multiply a and b and store in a
{
ll c[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
c[i][j]=0;
for(int k=0;k<n;k++)
{
c[i][j]+=a[i][k]*b[k][j];
c[i][j]%=MOD;
}
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=c[i][j];
}
void expo(ll graph[n][n],ll result[n][n],ll power)
{
while(power)
{
if(power&1)
multiply(result,graph);
multiply(graph,graph);
power>>=1;
}
}
int main()
{
ll test,e,a,b,q,l;
while(test--)
{
ll graph[n][n],result[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
graph[i][j]=0;
result[i][j]=0;
if(i==j)
result[i][j]=1;
}
while(e--)
{
graph[a][b]++;
graph[b][a]++;
}
/*for(int i=0;i<n;i++)
{
printf("\n");
for(int j=0;j<n;j++)
printf("%lld\t",result[i][j]);
}
*/
expo(graph,result,l);
/*for(int i=0;i<n;i++)
{
printf("\n");
for(int j=0;j<n;j++)
printf("%lld\t",result[i][j]);
}
*/
while(q--)
{
printf("%lld\n",result
[a
][b
]); }
}
return 0;
}
LyoKCUNvZGUgQnkgOiBBbXJ1dGFuc3UgR2FyYW5haWsKCWNvZGVjaGVmIGlkIDogZHJhZ29uZW1wZXJvcgoqLwojaW5jbHVkZTxzdGRpby5oPgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpsbCBuOwp2b2lkIG11bHRpcGx5KGxsIGFbbl1bbl0sbGwgYltuXVtuXSkJCS8vbXVsdGlwbHkgYSBhbmQgYiBhbmQgc3RvcmUgaW4gYQp7CglsbCBjW25dW25dOwoJZm9yKGludCBpPTA7aTxuO2krKykKCWZvcihpbnQgaj0wO2o8bjtqKyspCgl7CgkJY1tpXVtqXT0wOwoJCWZvcihpbnQgaz0wO2s8bjtrKyspCgkJewoJCQljW2ldW2pdKz1hW2ldW2tdKmJba11bal07CgkJCWNbaV1bal0lPU1PRDsKCQl9Cgl9Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJZm9yKGludCBqPTA7ajxuO2orKykKCQlhW2ldW2pdPWNbaV1bal07Cn0Kdm9pZCBleHBvKGxsIGdyYXBoW25dW25dLGxsIHJlc3VsdFtuXVtuXSxsbCBwb3dlcikKewoJd2hpbGUocG93ZXIpCgl7CgkJaWYocG93ZXImMSkKCQkJbXVsdGlwbHkocmVzdWx0LGdyYXBoKTsKCQltdWx0aXBseShncmFwaCxncmFwaCk7CgkJcG93ZXI+Pj0xOwoJfQp9CmludCBtYWluKCkKewoJbGwgdGVzdCxlLGEsYixxLGw7CglzY2FuZigiJWxsZCIsJnRlc3QpOwoJd2hpbGUodGVzdC0tKQoJewoJCXNjYW5mKCIlbGxkJWxsZCIsJm4sJmUpOwoJCWxsIGdyYXBoW25dW25dLHJlc3VsdFtuXVtuXTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCWZvcihpbnQgaj0wO2o8bjtqKyspCgkJewoJCQlncmFwaFtpXVtqXT0wOwoJCQlyZXN1bHRbaV1bal09MDsKCQkJaWYoaT09aikKCQkJCXJlc3VsdFtpXVtqXT0xOwoJCX0KCQl3aGlsZShlLS0pCgkJewoJCQlzY2FuZigiJWxsZCVsbGQiLCZhLCZiKTsKCQkJZ3JhcGhbYV1bYl0rKzsKCQkJZ3JhcGhbYl1bYV0rKzsKCQl9CgkJCgkJLypmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJcHJpbnRmKCJcbiIpOwoJCQlmb3IoaW50IGo9MDtqPG47aisrKQoJCQkJcHJpbnRmKCIlbGxkXHQiLHJlc3VsdFtpXVtqXSk7CgkJfQoJCSovCgkJCgkJc2NhbmYoIiVsbGQlbGxkIiwmcSwmbCk7CgkJZXhwbyhncmFwaCxyZXN1bHQsbCk7CgkJCgkJLypmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJcHJpbnRmKCJcbiIpOwoJCQlmb3IoaW50IGo9MDtqPG47aisrKQoJCQkJcHJpbnRmKCIlbGxkXHQiLHJlc3VsdFtpXVtqXSk7CgkJfQoJCSovCgkJCgkJd2hpbGUocS0tKQoJCXsKCQkJc2NhbmYoIiVsbGQlbGxkIiwmYSwmYik7CgkJCXByaW50ZigiJWxsZFxuIixyZXN1bHRbYV1bYl0pOwoJCX0KCX0KCXJldHVybiAwOwp9