#include <bits/stdc++.h>
using namespace std;
struct Tree {
  long long ans;
  long long c;
  int z;
  int l, r;
} tree[1000005];
int treelen = 0;
set<int> S[10];
char s[100005];
int insert(int i, char *s) {
  int j, ret = i, len = strlen(s);
  if (len == 0) {
    tree[treelen].z = -1;
    tree[treelen].l = -1;
    tree[treelen].r = -1;
    tree[treelen].ans = -1;
    tree[treelen].c = 0;
    treelen++;
    return ret;
  }
  for (j = 0; j < len; j++) {
    if (j != 0) tree[treelen - 1].r = treelen;
    tree[treelen].z = s[j] - '0';
    S[s[j] - '0'].insert(treelen);
    tree[treelen].l = -1;
    tree[treelen].r = -1;
    tree[treelen].ans = -1;
    tree[treelen].c = 0;
    treelen++;
  }
  return ret;
}
int creat(int d, int l) {
  set<int>::iterator it;
  for (it = S[d].begin(); it != S[d].end(); it++) {
    tree[*it].l = l;
  }
  S[d].clear();
  return 1;
}
long long ans;
long long bianli(int i) {
  long long aans;
  if (tree[i].ans != -1) return tree[i].ans;
  if (i != -1) {
    if (tree[i].l == -1 && tree[i].r == -1) {
      if (tree[i].z == -1) {
        tree[i].c = 1;
        tree[i].ans = 0;
      } else {
        tree[i].c = 10;
        tree[i].ans = tree[i].z;
      }
    } else if (tree[i].l == -1) {
      if (tree[i].z != -1) {
        ans = (ans * 10 + tree[i].z) % 1000000007;
      }
      aans = bianli(tree[i].r);
      tree[i].c = (10 * tree[tree[i].r].c) % 1000000007;
      tree[i].ans =
          (tree[i].z * tree[tree[i].r].c + tree[tree[i].r].ans) % 1000000007;
    } else if (tree[i].r == -1) {
      aans = bianli(tree[i].l);
      tree[i].ans = tree[tree[i].l].ans;
      tree[i].c = tree[tree[i].l].c;
    } else {
      aans = bianli(tree[i].l);
      aans = bianli(tree[i].r);
      tree[i].c = (tree[tree[i].l].c * tree[tree[i].r].c) % 1000000007;
      tree[i].ans =
          (tree[tree[i].l].ans * tree[tree[i].r].c + tree[tree[i].r].ans) %
          1000000007;
    }
  }
  return tree[i].ans;
}
int main() {
  scanf("%s", s);
  int len = strlen(s);
  insert(0, s);
  int t;
  scanf("%d", &t);
  while (t--) {
    int d;
    scanf("%d-%s", &d, s);
    creat(d, treelen);
    insert(treelen, s + 1);
  }
  cout << bianli(0) << endl;
  return 0;
}
