import sys

int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep="\n")
def II(): return int(sys.stdin.readline())
def MI(): return map(int, sys.stdin.readline().split())
def LI(): return list(map(int, sys.stdin.readline().split()))
def LLI(rows_number): return [LI() for _ in range(rows_number)]
def SI(): return sys.stdin.readline()[:-1]

def main():
    n,m=MI()
    xx=set([0])
    yy=set([0])
    vl=[]
    hl=[]
    for _ in range(n):
        a,b,c=MI()
        xx.add(a)
        xx.add(b)
        yy.add(c)
        vl.append((a,b,c))
    for _ in range(m):
        a,b,c=MI()
        xx.add(a)
        yy.add(b)
        yy.add(c)
        hl.append((b,c,a))

    dex=list(sorted(xx))
    dey=list(sorted(yy))
    cox={x:i for i,x in enumerate(dex)}
    coy={x:i for i,x in enumerate(dey)}
    h=len(dex)
    w=len(dey)

    tt=[[9]*w for _ in range(h)]
    s=set()
    for x0,x1,y in vl:
        j=coy[y]
        for i in range(cox[x0],cox[x1]):
            s.add(i*h+j)
    vl=s
    s=set()
    for y0,y1,x in hl:
        i=cox[x]
        for j in range(coy[y0],coy[y1]):
            s.add(i*h+j)
    hl=s
    #print(vl,hl)

    si,sj=cox[0],coy[0]
    stack=[(si,sj)]
    tt[si][sj]=1

    def inf():
        print("INF")
        exit()

    def move(ni,nj):
        if tt[ni][nj] == 9:
            tt[ni][nj] = 1
            stack.append((ni, nj))

    while stack:
        i,j=stack.pop()

        ni, nj = i, j - 1
        if i * h + j not in vl:
            if nj == -1: inf()
            move(ni, nj)

        ni, nj = i, j + 1
        if ni * h + nj not in vl:
            if nj == w - 1: inf()
            move(ni, nj)

        ni, nj = i-1, j
        if i * h + j not in hl:
            if ni == -1: inf()
            move(ni, nj)

        ni, nj = i+1, j
        if ni * h + nj not in hl:
            if ni == h - 1: inf()
            move(ni, nj)

    ans=0
    for i in range(h-1):
        for j in range(w-1):
            if tt[i][j]==1:
                ans+=(dex[i+1]-dex[i])*(dey[j+1]-dey[j])
    print(ans)

main()