#include <bits/stdc++.h>
using namespace std;
long long exp(long long a, long long p) {
  if (!a) return 0;
  long long ans = 1;
  while (p) {
    if (p & 1) ans = (ans * a) % 1000000007;
    a = (a * a) % 1000000007;
    p >>= 1;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  string s, garb;
  int q;
  cin >> s >> q;
  reverse(s.begin(), s.end());
  getline(cin, garb);
  vector<pair<int, string>> qs(q);
  for (int i = 0; i < (int)q; i++) {
    string r;
    getline(cin, r);
    qs[i] = {r[0] - '0', r.substr(3)};
    reverse(qs[i].second.begin(), qs[i].second.end());
  }
  vector<long long> val(10), len(10, 1);
  iota(val.begin(), val.end(), 0);
  reverse(qs.begin(), qs.end());
  for (auto& p : qs) {
    long long nv = 0, nl = 0;
    for (int i = 0; i < (int)p.second.size(); i++) {
      nv += val[p.second[i] - '0'] * exp(10, nl);
      nl += len[p.second[i] - '0'];
      nv %= 1000000007;
      nl %= 1000000007 - 1;
    }
    val[p.first] = nv;
    len[p.first] = nl;
  }
  long long ans = 0, pos = 0;
  for (int i = 0; i < (int)s.size(); i++) {
    ans += val[s[i] - '0'] * exp(10, pos);
    pos += len[s[i] - '0'];
    ans %= 1000000007;
    pos %= 1000000007 - 1;
  }
  cout << ans << "\n";
}
