#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 7;
const int mod = 1000000007;
vector<char> v[maxn];
int pw[10];
int val[10];
char digit[maxn];
string s;
int n, q;
char str[maxn];
int main() {
  cin >> s;
  cin >> q;
  for (int i = 0; i < q; i++) {
    scanf("%s", str);
    digit[i] = str[0];
    for (int j = 3; str[j]; j++) v[i].push_back(str[j]);
  }
  for (int i = 0; i < 10; i++) {
    pw[i] = 10;
    val[i] = i;
  }
  for (int i = q - 1; i >= 0; i--) {
    int d = digit[i] - '0';
    int n_val = 0;
    int n_pw = 1;
    for (int j = 0; j < v[i].size(); j++) {
      int tp = v[i][j] - '0';
      n_val = (long long)n_val * pw[tp] % mod;
      n_val = (n_val + val[tp]) % mod;
      n_pw = (long long)n_pw * pw[tp] % mod;
    }
    pw[d] = n_pw;
    val[d] = n_val;
  }
  int res = 0;
  for (int i = 0; s[i]; i++) {
    int tp = s[i] - '0';
    res = (long long)res * pw[tp] % mod;
    res = (res + val[tp]) % mod;
  }
  printf("%d\n", res);
  return 0;
}
