#include<bits/stdc++.h>
using namespace std;
#define MAX_M 100005
#define MAX_Q 100005
#define MAX 200005

int N,M,Q;
int d[MAX_M],a[MAX_M],b[MAX_M];
int e[MAX_Q],s[MAX_Q],t[MAX_Q];
int ans[MAX_Q];

vector<int> X;
vector<int> g[MAX];
vector<int> G[MAX];

int main(){
  scanf("%d %d %d",&N,&M,&Q);
  for(int i=0;i<M;i++){
    scanf("%d %d %d",&d[i],&a[i],&b[i]);
    X.push_back(d[i]);
  }
  for(int i=0;i<Q;i++){
    scanf("%d %d %d",&e[i],&s[i],&t[i]);
    X.push_back(e[i]);
  }
  sort(X.begin(),X.end());
  X.erase( unique( X.begin(), X.end() ), X.end() );
  
  for(int i=0;i<M;i++){
    d[i]=lower_bound(X.begin(),X.end(),d[i])-X.begin();

    g[ d[i] ].push_back(i);
  }
  
  for(int i=0;i<Q;i++){
    e[i]=lower_bound(X.begin(),X.end(),e[i])-X.begin();

    G[ e[i] ].push_back(i);
  }

  set<int> st;
  for(int i=1;i<N;i++)st.insert(i);
  set<int> :: iterator it;
  
  for(int i=0;i<MAX;i++){
    
    for(int id:G[i]){
      int left=s[id], right=t[id];
      it=st.lower_bound(left);
      if( it==st.end() || *it >= right ){
        ans[id]=1;
      }else{
        ans[id]=0;
      }
    }
    
    for(int id:g[i]){
      int left=a[id], right=b[id];
      while(1){
        it=st.lower_bound(left);
        if(it==st.end() || *it >= right)break;
        st.erase(it);
      }
    }
  }
  for(int i=0;i<Q;i++){
    if(ans[i]){
      cout<<"Yes"<<endl;
    }else{
      cout<<"No"<<endl;
    }
  }
  return 0;
}

