#include <bits/stdc++.h>
using namespace std;
template <typename TYPE>
inline TYPE sqr(const TYPE &a) {
  return a * a;
}
const long double EPS = 1e-9;
const long double PI = 2 * acos(0.0);
const int N = 100;
const int MODULO = 1e9 + 7;
void do_mul(long long &tg, long long m) { tg = (tg * m) % MODULO; }
void do_add(long long &tg, long long a) { tg = (tg + a) % MODULO; }
vector<long long> rem, mult;
void conv(const string &s, long long &r, long long &m) {
  r = 0;
  m = 1;
  for (size_t j = 0; j < s.size(); ++j) {
    int d = s[j] - '0';
    do_mul(m, mult[d]);
    do_mul(r, mult[d]);
    do_add(r, rem[d]);
  }
}
int main() {
  string s;
  getline(cin, s);
  int n;
  scanf("%d\n", &n);
  vector<char> qfm;
  vector<string> qto;
  for (int it = 0; it < n; ++it) {
    string q;
    getline(cin, q);
    qfm.push_back(q[0] - '0');
    qto.push_back(q.substr(3));
  }
  for (int i = 0; i < 10; ++i) {
    rem.push_back(i);
    mult.push_back(10);
  }
  long long r, m;
  for (int i = n - 1; i >= 0; --i) {
    conv(qto[i], r, m);
    int from = qfm[i];
    rem[from] = r;
    mult[from] = m;
  }
  conv(s, r, m);
  cout << r << endl;
  return 0;
}
