from collections import defaultdict
import heapq
def solve(s, ts):
use = defaultdict(set)
for i in range(len(s)):
for j, t in enumerate(ts):
l = len(t)
if s[i:i+l] == ts[j]:
use[i].add((l, j, i))
q = []
for l, j, i in use[0]:
heapq.heappush(q, (-l, j, 0))
#print(use)
#print(q)
i = 1
res = []
end = 0
while q:
l, j, st = heapq.heappop(q)
res.append((j, st))
end =-l
if end >= len(s):
break
for ii in range(i, end+1):
for ll, jj, ss in use[ii]:
heapq.heappush(q, (-(ss+ll), jj, ss))
i = end
#print(q)
return res if end >= len(s) else -1
T = int(input())
for _ in range(T):
s = input()
n = int(input())
ts = []
for _ in range(n):
ts.append(input())
res = solve(s, ts)
if res == -1:
print(-1)
else:
print(len(res))
for x, y in res:
print(str(x+1) + " " + str(y+1))