#include <bits/stdc++.h>
using namespace std;
string s;
int n;
long long v[10];
long long d[10];
string q[100000];
long long pp(long long x, long long y) {
  if (y == 0) return 1;
  long long t;
  t = pp(x, y / 2);
  t = (t * t) % 1000000007;
  if (y % 2) t = (t * x) % 1000000007;
  return t;
}
long long getv(string t) {
  long long l = 1;
  long long r = 0;
  for (int i = t.length() - 1; i >= 0; i--) {
    long long c = t[i] - '0';
    r = (l * v[c]) % 1000000007 + r;
    r = r % 1000000007;
    l = (l * pp(10, d[c])) % 1000000007;
  }
  return r;
}
long long getd(string t) {
  long long x = 0;
  for (int i = 0; i < t.length(); i++)
    x = (x + d[t[i] - '0']) % (1000000007 - 1);
  return x;
}
int main() {
  cin >> s;
  for (int i = 0; i < 10; i++) {
    v[i] = i;
    d[i] = 1;
  }
  cin >> n;
  for (int i = 0; i < n; i++) cin >> q[i];
  reverse(q, q + n);
  for (int i = 0; i < n; i++) {
    int c = q[i][0] - '0';
    v[c] = getv(q[i].substr(3));
    d[c] = getd(q[i].substr(3));
  }
  long long rez;
  rez = getv(s);
  cout << rez;
  return 0;
}
