#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,m,col[N];
vector<int> g1[N],g2[N];
struct node{
int a,b,c;
}k[N];
int fl=0,in[N],res[N];
void dfs(int x,int fa){
for(auto to:g1[x]){
if(to==fa) continue;
if(col[to]&&col[to]==col[x]) fl=1;
if(col[to]) continue;
col[to]=(col[x]==1?2:1);
dfs(to,x);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int op,x,y;scanf("%d%d%d",&op,&x,&y);
k[i]={op,x,y};
g1[x].push_back(y);
g1[y].push_back(x);
}
for(int i=1;i<=n;i++){
if(!col[i]) {
col[i]=1;
dfs(i,0);
}
}
if(fl==1){cout<<"NO"<<endl;return 0;}
int cnt=0;
for(int i=1;i<=m;i++){
int op=k[i].a,x=k[i].b,y=k[i].c;
if(op==1){
if(col[x]==1) g2[x].push_back(y),in[y]++;
else g2[y].push_back(x),in[x]++;
}else{
if(col[x]==2) g2[x].push_back(y),in[y]++;
else g2[y].push_back(x),in[x]++;
}
}
queue<int> q;for(int i=1;i<=n;i++) if(!in[i]) q.push(i);
while(q.size()){
int tp=q.front();q.pop();
res[tp]=++cnt;
for(auto to:g2[tp]){
if(!(--in[to])) q.push(to);
}
}
if(cnt!=n){cout<<"NO"<<endl;return 0;}
cout<<"YES"<<endl;
for(int i=1;i<=n;i++) {
if(col[i]==1) cout<<'L'<<" "<<res[i]<<endl;
else cout<<'R'<<" "<<res[i]<<endl;
}
}