#include<cstdio>
const int rSiz=1<<21;
char rBuf[rSiz],*p1=rBuf,*p2=rBuf;
#define gc() (p1==p2&&(p2=(p1=rBuf)+ \
fread(rBuf,1,rSiz,stdin),p1==p2)?EOF:*p1++)
template<class T>void rd(T&x){
char ch=gc();
for(;ch<'0'||ch>'9';ch=gc());
for(x=0;ch>='0'&&ch<='9';ch=gc())
x=(x<<1)+(x<<3)+(ch^48);
}
#include<bits/stdc++.h>
const int _=1e5+5;
int n,m,k;
std::vector<std::pair<int,int> >t[_<<2];
void Chg(int x,int l,int r,int L,int R,int u,int v){
if(L<=l&&r<=R){
t[x].push_back({u,v});
return;
}
if(R<l||L>r)return;
int mid=(l+r)>>1;
Chg(x<<1,l,mid,L,R,u,v);
Chg(x<<1|1,mid+1,r,L,R,u,v);
}
int fa[_<<1],siz[_<<1];bool ans[_];
int Fnd(int x){return x==fa[x]?x:Fnd(fa[x]);}
int sta[_<<1][2],tp,c[_<<2];
int Unn(int x,int y){
x=Fnd(x),y=Fnd(y);
if(x==y)return 0;
if(siz[x]>siz[y])std::swap(x,y);
sta[++tp][0]=x;sta[tp][1]=y;
fa[x]=y;siz[y]+=siz[x];
return 1;
}
void Del(int cnt){
for(;cnt;cnt--){
int x=sta[tp][0],y=sta[tp--][1];
fa[x]=x;siz[y]-=siz[x];
}
}
void dfs(int x,int l,int r){
for(auto i:t[x]){
int u=i.first,v=i.second;
c[x]+=Unn(u,v+n);
c[x]+=Unn(v,u+n);
}
bool op=1;
for(int i=1;op&&i<=n;i++)
if(Fnd(i)==Fnd(i+n))op=0;
if(l==r){ans[l]=op;Del(c[x]);return;}
if(!op){Del(c[x]);return;}
int mid=(l+r)>>1;
dfs(x<<1,l,mid);
dfs(x<<1|1,mid+1,r);
Del(c[x]);
}
int main(){
rd(n);rd(m);rd(k);
for(int i=1;i<=m;i++){
int u,v,l,r;rd(u),rd(v),rd(l),rd(r);
Chg(1,1,k,l+1,r,u,v);
}
for(int i=1;i<=n<<1;i++)fa[i]=i,siz[i]=1;
dfs(1,1,k);
for(int i=1;i<=k;i++){
if(ans[i])printf("Yes\n");
else printf("No\n");
}
return 0;
}