"""

https://yukicoder.me/problems/no/1266

頂点を7倍する
→行ける頂点数になる

N*C+v を頂点番号とする

"""

from sys import stdin

def uf_find(n):

    ufl = []

    while p[n] != n:
        ufl.append(n)
        n = p[n]

    for i in ufl:
        p[i] = n

    return n


def uf_union(a,b):

    ap = uf_find(a)
    bp = uf_find(b)

    if ap == bp:
        return True
    else:

        if rank[ap] > rank[bp]:
            p[bp] = ap
            vnum[ap] += vnum[bp]
        elif rank[ap] < rank[bp]:
            p[ap] = bp
            vnum[bp] += vnum[ap]
        else:
            p[bp] = ap
            rank[ap] += 1
            vnum[ap] += vnum[bp]

        return False

N,M,Q = map(int,stdin.readline().split())

exist = [False] * (7*N)
p = [i for i in range(7*N)]
rank = [0] * (7*N)
vnum = [1] * (7*N)

slis = []
for i in range(N):
    s = list(stdin.readline()[:-1])
    for j in range(7):
        if s[j] == "1":
            exist[N*j+i] = True
            if s[j] == "1" and s[(j+1)%7] == "1":
                k = (j+1)%7
                uf_union(N*j+i , N*k+i)
    slis.append(s)

lis = [ [] for i in range(N) ]
for i in range(M):
    v,u = map(int,stdin.readline().split())
    v -= 1
    u -= 1
    for j in range(7):
        if exist[N*j+v] and exist[N*j+u]:
            uf_union(N*j+v,N*j+u)
    lis[v].append(u)
    lis[u].append(v)

ans = []
for loop in range(Q):
    tp,x,y = map(int,stdin.readline().split())
    x -= 1
    y -= 1
    if tp == 1:
        exist[N*y+x] = True
        for nex in lis[x]:
            if exist[N*y+nex]:
                uf_union(N*y+x,N*y+nex)
        if slis[x][(y-1)%7] == "1":
            k = (y-1)%7
            uf_union(N*y+x,N*k+x)
        if slis[x][(y+1)%7] == "1":
            k = (y+1)%7
            uf_union(N*y+x,N*k+x)
        slis[x][y] = "1"
    else:
        ans.append( vnum[uf_find(x)] )
print ("\n".join(map(str,ans)))