#include<bits/stdc++.h>
using namespace std;
const int maxm=2005;
int m,L,R,ans;
int A[maxm],B[maxm],C[maxm];
void add_edge(int x,int y,int z)
{
	++m;
	A[m]=x,B[m]=y,C[m]=z;
}
void gen(int n)
{
	int t=0;
	for(int i=1;(1<<i)<=n;++i) t=i;
	if((n&-n)==n){
		for(int i=2;i<=t+2;++i){
			add_edge(1,i,1);
			for(int j=2;j<i;++j) add_edge(j,i,1<<(j-2));
		}
		ans=t+2;
	}
	else{
		gen(1<<t);
		int now=n;
		for(int j=t+2;j>=2;--j){
			int s=now-(1<<(j-2));
			if(s>=1) add_edge(j,t+3,s),now=s;
		}
		add_edge(1,t+3,1);
		ans=t+3;
	}
}
int main()
{
	scanf("%d%d",&L,&R);
	gen(R-L+1);
	if(L>1) ++ans,add_edge(ans-1,ans,L-1);
	printf("YES\n");
	printf("%d %d\n",ans,m);
	for(int i=1;i<=m;++i) printf("%d %d %d\n",A[i],B[i],C[i]);
	return 0;
} 