#include <bits/stdc++.h>
using namespace std;
using ll=long long;

struct L{
    int a,b,c;
    L(int a=0,int b=0,int c=0):a(a),b(b),c(c){}
};

const int dx[]={-1,0,1,0};
const int dy[]={0,-1,0,1};

int main(){
    int n,m;
    cin>>n>>m;
    map<int,int> mpx,mpy;
    mpx[0]=0;
    mpy[0]=0;
    vector<L> lh,lv;
    for(int i=0;i<n;i++){
        int a,b,c;
        cin>>a>>b>>c;
        mpx[a]=0;
        mpx[b]=0;
        mpy[c]=0;
        lh.emplace_back(a,b,c);
    }
    for(int i=0;i<m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        mpx[a]=0;
        mpy[b]=0;
        mpy[c]=0;
        lv.emplace_back(a,b,c);
    }
    vector<int> xs,ys;
    for(auto &p:mpx){
        p.second=xs.size();
        xs.emplace_back(p.first);
    }
    for(auto &p:mpy){
        p.second=ys.size();
        ys.emplace_back(p.first);
    }

    int h=xs.size()*2;
    int w=ys.size()*2;

    vector<vector<int>> d(h,vector<int>(w));
    for(int i=0;i<n;i++){
        int a=mpx[lh[i].a]*2;
        int b=mpx[lh[i].b]*2;
        int c=mpy[lh[i].c]*2;
        for(int x=a;x<=b;x++){
            d[x][c]=-1;
        }
    }
    for(int i=0;i<m;i++){
        int a=mpx[lv[i].a]*2;
        int b=mpy[lv[i].b]*2;
        int c=mpy[lv[i].c]*2;
        for(int y=b;y<=c;y++){
            d[a][y]=-1;
        }
    }

    queue<pair<int,int>> q;
    int sx=mpx[0]*2;
    int sy=mpy[0]*2;
    d[sx][sy]=1;
    q.emplace(sx,sy);
    while(!q.empty()){
        auto fr=q.front();
        int x=fr.first;
        int y=fr.second;
        q.pop();
        for(int i=0;i<4;i++){
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(nx<0||ny<0||h<=nx||w<=ny){
                continue;
            }
            if(d[nx][ny]!=0){
                continue;
            }
            d[nx][ny]=1;
            q.emplace(nx,ny);
        }
    }

    ll ans=0;
    for(int x=0;x<h;x++){
        for(int y=0;y<w;y++){
            if(d[x][y]!=1){
                continue;
            }
            if(x==0||x==h-1||y==0||y==w-1){
                cout<<"INF"<<endl;
                return 0;
            }
            if(x%2==0||y%2==0){
                continue;
            }
            ll dx=xs[x/2+1]-xs[x/2];
            ll dy=ys[y/2+1]-ys[y/2];
            ans+=dx*dy;
        }
    }

    cout<<ans<<endl;
}