#include <bits/stdc++.h>
using namespace std;
char s[211111], a[211111];
vector<char> v[211111];
long long len[10], val[10];
int n;
long long pv(long long a, long long b) {
  if (b == 0) return 1;
  long long r = pv(a, b / 2);
  r = r * r % 1000000007;
  if (b % 2) r = r * a % 1000000007;
  return r;
}
int main() {
  gets(s);
  scanf("%d\n", &n);
  for (int i = 0; i < n; i++) {
    gets(a);
    int k = strlen(a);
    for (int j = 0; j < k; j++) v[i].push_back(a[j]);
  }
  for (int i = 0; i < 10; i++) {
    len[i] = 1;
    val[i] = i % 1000000007;
  }
  for (int i = n - 1; i >= 0; i--) {
    int x = v[i][0] - '0';
    long long va = 0;
    long long le = 0;
    for (int j = v[i].size() - 1; j >= 3; j--) {
      va = (va + val[v[i][j] - '0'] * 1ll * pv(10, le)) % 1000000007;
      le = (le + len[v[i][j] - '0']) % 1000000006;
    }
    val[x] = va;
    len[x] = le;
  }
  long long p = 0;
  long long ans = 0;
  int k = strlen(s);
  for (int i = k - 1; i >= 0; i--) {
    int x = s[i] - '0';
    ans = (ans + val[x] * 1ll * pv(10, p)) % 1000000007;
    p = (p + len[x]) % 1000000006;
  }
  cout << ans << endl;
  return 0;
}
