import collections
import math
import operator
import sys

funcs = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.floordiv}

n, m, k = map(int, input().split())
k -= 1

a = [int(input()) for _ in range(n)]
src = a[k]
used = set(a[:k] + a[k + 1 :])

if src not in used:
    print(0)
    sys.exit(0)

ops = []
for _ in range(m):
    op, v = input().split()
    if op == '/':
        op = '//'
    v = int(v)
    ops.append((op, v))

# node to dist, previous op, previous value
dist = {src: (0, -1, -1)}
q = collections.deque([src])
while q:
    u = q.popleft()
    cur = dist[u][0] + 1
    for i, (op, x) in enumerate(ops):
        v = funcs[op](u, x)
        if v < 0:
            continue
        if v not in used:
            print(cur)
            ans = [i]
            while u != src:
                _, prev_op, prev_val = dist[u]
                ans.append(prev_op)
                u = prev_val

            for x in reversed(ans):
                print(x + 1)

            sys.exit(0)
        elif v not in dist:
            dist[v] = (cur, i, u)
            q.append(v)

print(-1)
