#include <bits/stdc++.h>
using namespace std;
int l[10], a[10];
char str[100010];
char s[100010], buf[100010];
int st[100010], ed[100010], n, tr[100010], all[100010];
int pow(int a, int b, int c) {
  int ret = 1;
  while (b) {
    if (b & 1) ret = 1ll * ret * a % 1000000007;
    b >>= 1;
    a = 1ll * a * a % 1000000007;
  }
  return ret;
}
int main() {
  scanf("%s", str + 1);
  for (int i = 0; i < 10; i++) l[i] = 1, a[i] = i;
  scanf("%d", &n);
  int tot = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%s", buf + 1);
    tr[i] = buf[1] - 48;
    int o = strlen(buf + 1);
    if (o == 3) {
      st[i] = 1;
      ed[i] = 0;
      continue;
    }
    st[i] = tot + 1;
    for (int j = 4; j <= o; j++) all[++tot] = buf[j] - 48;
    ed[i] = tot;
  }
  for (int i = n; i; i--) {
    int kk = 0, tl = 0;
    for (int j = st[i]; j <= ed[i]; j++) {
      kk = (1LL * kk * pow(10, l[all[j]], 1000000007) + a[all[j]]) % 1000000007;
      tl += l[all[j]];
      if (tl >= 1000000007 - 1) tl -= 1000000007 - 1;
    }
    l[tr[i]] = tl;
    a[tr[i]] = kk;
  }
  int len = strlen(str + 1), kk = 0;
  for (int i = 1; i <= len; i++)
    kk = (1LL * kk * pow(10, l[str[i] - 48], 1000000007) + a[str[i] - 48]) %
         1000000007;
  cout << kk << endl;
  return 0;
}
