#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
const int K = 10;
const int MOD = 1e9 + 7;
int t[K], l[K];
string q[N];
int binPow(int x, int k) {
  int res = 1;
  while (k) {
    if (k & 1) res = (res * 1ll * x) % MOD;
    x = (x * 1ll * x) % MOD;
    k >>= 1;
  }
  return res;
}
int main() {
  string s;
  int m, ans = 0;
  cin >> s >> m;
  for (int i = 0; i < K; i++) {
    t[i] = i;
    l[i] = 1;
  }
  for (int i = 0; i < m; i++) cin >> q[i];
  for (int i = m - 1; i >= 0; i--) {
    int x = q[i][0] - '0';
    int n = q[i].size(), newT = 0, newL = 0;
    for (int j = 0; j < n - 3; j++) {
      int y = q[i][n - 1 - j] - '0';
      newT = (newT + (t[y] * 1ll * binPow(10, newL)) % MOD) % MOD;
      newL = (newL + l[y]) % (MOD - 1);
    }
    t[x] = newT;
    l[x] = newL;
  }
  int nowL = 0;
  for (int i = (int)s.size() - 1; i >= 0; i--) {
    int y = s[i] - '0';
    ans = (ans + (t[y] * 1ll * binPow(10, nowL)) % MOD) % MOD;
    nowL = (nowL + l[y]) % (MOD - 1);
  }
  cout << ans << endl;
  return 0;
}
