Andrew and Eugene are playing a game. Initially, Andrew has string s, consisting of digits. Eugene sends Andrew multiple queries of type "d_{i} → t_{i}", that means "replace all digits d_{i} in string s with substrings equal to t_{i}". For example, if s = 123123, then query "2 → 00" transforms s to 10031003, and query "3 → " ("replace 3 by an empty string") transforms it to s = 1212. After all the queries Eugene asks Andrew to find the remainder after division of number with decimal representation equal to s by 1000000007 (10^9 + 7). When you represent s as a decimal number, please ignore the leading zeroes; also if s is an empty string, then it's assumed that the number equals to zero.

Andrew got tired of processing Eugene's requests manually and he asked you to write a program for that. Help him!


-----Input-----

The first line contains string s (1 ≤ |s| ≤ 10^5), consisting of digits — the string before processing all the requests.

The second line contains a single integer n (0 ≤ n ≤ 10^5) — the number of queries.

The next n lines contain the descriptions of the queries. The i-th query is described by string "d_{i}->t_{i}", where d_{i} is exactly one digit (from 0 to 9), t_{i} is a string consisting of digits (t_{i} can be an empty string). The sum of lengths of t_{i} for all queries doesn't exceed 10^5. The queries are written in the order in which they need to be performed.


-----Output-----

Print a single integer — remainder of division of the resulting number by 1000000007 (10^9 + 7).


-----Examples-----
Input
123123
1
2->00

Output
10031003

Input
123123
1
3->

Output
1212

Input
222
2
2->0
0->7

Output
777

Input
1000000008
0

Output
1



-----Note-----

Note that the leading zeroes are not removed from string s after the replacement (you can see it in the third sample).

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = "def main():\n    s = input()\n    n = int(input())\n    \n    M = 1000000007\n    a = {str(s):[10, s] for s in range(10)}\n    d = [['_', s]] + [input().split('->') for _ in range(n)]\n    \n    for di, ti in reversed(d):\n        _p = 1\n        _v = 0\n        for c in ti:\n            _v = (_v * a[c][0] + a[c][1]) % M\n            _p = (_p * a[c][0]) % M\n        a[di] = [_p, _v]\n\n    print(a['_'][1])\n\n    \ndef __starting_point():\n    main()\n\n\n__starting_point()"
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 13911