#include <bits/stdc++.h>
#define gl(x) getline(cin,x);
using namespace std;
//declare mod
long long fib[1000000],mod=1000000007;
int main()
{
int tc;
cin>>tc;
string s;
while(tc--)
{
int a,b;
cin>>a>>b;
fib[0]=a;
fib[1]=b;
for(int i=2;i<1000000;i++)
fib[i] = (fib[i-1]+fib[i-2])%mod;
//we need 2 getlines because the
//first getline will take the '\n' from the previous input
//second getline will take the string as input
gl(s)
gl(s)
stringstream ss;
ss<<s;
int x;
int sum=0;
while(ss>>x){
sum += fib[x-1];
}
cout<<sum<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZ2woeCkgZ2V0bGluZShjaW4seCk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vZGVjbGFyZSBtb2QKbG9uZyBsb25nIGZpYlsxMDAwMDAwXSxtb2Q9MTAwMDAwMDAwNzsKaW50IG1haW4oKQp7CiAgICBpbnQgdGM7CiAgICBjaW4+PnRjOwogICAgc3RyaW5nIHM7CiAgICB3aGlsZSh0Yy0tKQogICAgewogICAgICAgIGludCBhLGI7CiAgICAgICAgY2luPj5hPj5iOwogICAgICAgIGZpYlswXT1hOwogICAgICAgIGZpYlsxXT1iOwogICAgICAgIGZvcihpbnQgaT0yO2k8MTAwMDAwMDtpKyspCiAgICAgICAgICAgIGZpYltpXSA9IChmaWJbaS0xXStmaWJbaS0yXSklbW9kOwogICAgICAgIC8vd2UgbmVlZCAyIGdldGxpbmVzIGJlY2F1c2UgdGhlCiAgICAgICAgLy9maXJzdCBnZXRsaW5lIHdpbGwgdGFrZSB0aGUgJ1xuJyBmcm9tIHRoZSBwcmV2aW91cyBpbnB1dCAKICAgICAgICAvL3NlY29uZCBnZXRsaW5lIHdpbGwgdGFrZSB0aGUgc3RyaW5nIGFzIGlucHV0CiAgICAgICAgZ2wocykKICAgICAgICBnbChzKQogICAgICAgIHN0cmluZ3N0cmVhbSBzczsKICAgICAgICBzczw8czsKICAgICAgICBpbnQgeDsKICAgICAgICBpbnQgc3VtPTA7CiAgICAgICAgd2hpbGUoc3M+PngpewogICAgICAgICAgICBzdW0gKz0gZmliW3gtMV07CiAgICAgICAgfQogICAgICAgIGNvdXQ8PHN1bTw8ZW5kbDsKICAgIH0KfQo=