#include <bits/stdc++.h>
using namespace std;
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T, size_t SZ>
void pr(const array<T, SZ>& x);
template <class T>
void pr(const vector<T>& x);
template <class T>
void pr(const set<T>& x);
template <class T1, class T2>
void pr(const map<T1, T2>& x);
template <class T>
void pr(const T& x) {
  cout << x;
}
template <class Arg, class... Args>
void pr(const Arg& first, const Args&... rest) {
  pr(first);
  pr(rest...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.first, ", ", x.second, "}");
}
template <class T>
void prContain(const T& x) {
  pr("{");
  bool fst = 1;
  for (auto& a : x) pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}
template <class T, size_t SZ>
void pr(const array<T, SZ>& x) {
  prContain(x);
}
template <class T>
void pr(const vector<T>& x) {
  prContain(x);
}
template <class T>
void pr(const set<T>& x) {
  prContain(x);
}
template <class T1, class T2>
void pr(const map<T1, T2>& x) {
  prContain(x);
}
void ps() { pr("\n"); }
template <class Arg, class... Args>
void ps(const Arg& first, const Args&... rest) {
  pr(first, " ");
  ps(rest...);
}
template <typename T>
int remin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
int remax(T& a, const T& b) {
  if (b > a) {
    a = b;
    return true;
  }
  return false;
}
int T;
const int MOD = 1E9 + 7;
inline int add(int a, int b) { return (a + b) % MOD; }
inline int sub(int a, int b) { return (a - b + MOD) % MOD; }
inline int mult(int a, int b) { return 1LL * a * b % MOD; }
int fast_exp(int n, int e) {
  if (e == 0) return 1;
  if (e & 1) return mult(n, fast_exp(n, e - 1));
  return fast_exp(mult(n, n), e / 2);
}
inline int inv(int a) {
  a %= MOD;
  if (a < 0) a += MOD;
  int b = MOD, u = 0, v = 1;
  while (a) {
    int t = b / a;
    b -= t * a;
    swap(a, b);
    u -= t * v;
    swap(u, v);
  }
  assert(b == 1);
  if (u < 0) u += MOD;
  return u;
}
int main(int argc, const char** argv) {
  cin >> T;
  for (int tt = 0; tt < T; ++tt) {
    int x;
    cin >> x;
    string s, c;
    cin >> s;
    int n = s.size();
    for (int l = 1; l <= x; ++l) {
      int k = s[l - 1] - '0';
      if (k == 1) continue;
      n = add(n, mult(k - 1, sub(n, l)));
      if ((int)s.size() <= x) {
        c = s.substr(l);
      }
      for (int i = 0; i < k - 1; ++i) {
        if ((int)s.size() > x) break;
        s += c;
      }
    }
    printf("%d\n", n);
  }
  return 0;
}
