#include <bits/stdc++.h>
using namespace std;
using std::cin;
using std::cout;
long long int mod = 1000000007;
long long int gcd(long long int a, long long int b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
struct values {
  long long int count;
  long long int acount;
  long long int bcount;
  long long int time;
  long long int aextra;
  long long int bextra;
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) {
    long long int x;
    cin >> x;
    string ss;
    cin >> ss;
    long long int length = ss.length();
    vector<char> arr(ss.begin(), ss.end());
    long long int l = 1;
    long long int ans = ss.length(), flag = 1;
    while (l <= x) {
      if (arr[l - 1] != '1' && flag == 1) {
        long long int temp = ans - l;
        vector<char> yoyo(arr.begin() + l, arr.end());
        if (ans < x) {
          arr.insert(arr.end(), yoyo.begin(), yoyo.end());
        } else
          flag = 0;
        ans = (ans + temp) % mod;
        if (arr[l - 1] == '3') {
          if (ans < x) {
            arr.insert(arr.end(), yoyo.begin(), yoyo.end());
          } else
            flag = 0;
          ans = (ans + temp) % mod;
        }
      } else if (arr[l - 1] == '2' && flag == 0) {
        ans = (ans + (ans - l) % mod) % mod;
      } else if (arr[l - 1] == '3' && flag == 0) {
        ans = (ans + (2 * (ans - l)) % mod) % mod;
      }
      l++;
    }
    cout << (ans + mod) % mod << endl;
  }
}
