#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <set>
#include <map>
#include <iomanip>
#include <utility>

using namespace std;

#define mp make_pair
#define pb push_back
#define fi first
#define se second

typedef long long LL;
typedef long double LD;
typedef vector <int> VI;
typedef vector <VI> VVI;
typedef vector <string> VS;

template <class T>
inline T sql(T a) { return a*a; }

#define filename "pawns"
int npar,mpar;
int x[1200],y[1200],p[1200],tmp[1200];
bool used[1200];
bool d[1200][1200];
VVI field;
bool dfs(int v){
	if (used[v]) return 0;
	used[v]=1;
	for (int ii=0;ii<field[v].size();ii++){
		int i=field[v][ii];
		if ((p[i]==-1)||(dfs(p[i]))){
			p[i]=v;
			return 1;
		}
	}
	return 0;
}
bool check(int k){
	for (int i=0;i<k;i++)
		if (!used[i]) return 0;
	return 1;
}
int main() {
	freopen(filename ".in", "r", stdin);
	freopen(filename ".out", "w", stdout);
	int n,m,k;
	cin>>n>>m>>k;
	field.assign(k+2,VI());
	VVI pole(n,VI(m,0));
	pole[0]=VI(m,1);
	for (int i=0;i<k;i++){
		cin>>x[i]>>y[i];
		x[i]--;
		y[i]--;
		pole[x[i]][y[i]]=3;
	}
	for (int i=0;i<m;i++){
		x[i+k]=0;y[i+k]=i;
	}
	mpar=k;
	npar=k+m;
	for (int i=0;i<npar;i++){
		p[i]=-1;
		for (int j=0;j<mpar;j++)
			if (x[i]<x[j] && abs(y[i]-y[j])==1){
				//cerr<<i<<' '<<j<<endl;
				field[j].push_back(i);
			}
	}
	for (int i=0;i<mpar;i++){
		for (int j=0;j<mpar;j++)
			used[j]=0;
		dfs(i);
	}
	int cnt=0;
	for (int i=0;i<npar;i++)
		if (p[i]!=-1) cnt++;
	if (cnt!=mpar) {cout<<"No";return 0;}
	//cout<<cnt<<endl;
	cout<<"Yes"<<endl;
	for (int i=0;i<npar;i++) {
		if (p[i]!=-1) {
			if (y[i]+1==y[p[i]])
				pole[x[p[i]]][y[p[i]]]=2;
		}
	}
	int cnt2=0;
	VVI pole2=pole;
	for (int i=1;i<n;i++)
		for (int j=0;j<m;j++) {
			if (pole[i][j]<2) continue;
			if (pole[i][j]==2) {
				int k=i-1;
				while (pole[k][j-1]!=1) k--;
				pole[k][j-1]=0;
				pole[i][j]=1;
				for (int ii=k+1;ii<i;ii++) cnt2++;
				cnt2++;
			}
			else {
				int k=i-1;
				while (pole[k][j+1]!=1) k--;
				pole[k][j+1]=0;
				pole[i][j]=1;
				for (int ii=k+1;ii<i;ii++) cnt2++;
				cnt2++;
			}
		}
	cout << cnt2 << endl;
	pole=pole2;
	for (int i=1;i<n;i++)
		for (int j=0;j<m;j++) {
			if (pole[i][j]<2) continue;
			if (pole[i][j]==2) {
				int k=i-1;
				while (pole[k][j-1]!=1) k--;
				pole[k][j-1]=0;
				pole[i][j]=1;
				for (int ii=k+1;ii<i;ii++) cout << ii << ' ' << j << " F" << endl;
				cout << i << ' ' << j << " R" << endl;
			}
			else {
				int k=i-1;
				while (pole[k][j+1]!=1) k--;
				pole[k][j+1]=0;
				pole[i][j]=1;
				for (int ii=k+1;ii<i;ii++) cout << ii << ' ' << j+2 << " F" << endl;
				cout << i << ' ' << j+2 << " L" << endl;
			}
		}
	/*memcpy(tmp,p,sizeof(p));
	cnt=0;
	for (int i=0;i<k;i++)
		used[i]=0;
	for (int i=k;i<npar;i++)
		if (p[i]!=-1){
			//cerr<<i<<' '<<p[i]<<endl;
			used[p[i]]=1;
			cnt+=x[p[i]]-x[i];
		}
	while (!check(k)){
		for (int i=0;i<k;i++)
			if (used[i] && p[i]!=-1){
				cnt+=x[p[i]]-x[i];
				used[p[i]]=1;
				p[i]=-1;
			}
	}
	cout<<cnt<<endl;
	memcpy(p,tmp,sizeof(tmp));
	for (int i=0;i<k;i++)
		used[i]=0;
	for (int i=k;i<npar;i++)
		if (p[i]!=-1){
			//cerr<<i<<' '<<p[i]<<endl;
			used[p[i]]=1;
			for (int j=x[i];j+1<x[p[i]];j++) cout<<j+1<<' '<<y[i]+1<<" F"<<endl;
			cout<<x[p[i]]<<' '<<y[i]+1<<' ';
			if (y[i]>y[p[i]]) cout<<'L'; else cout<<'R';
			cout<<endl;
		}
	while (!check(k)){
		for (int i=0;i<k;i++)
			if (used[i] && p[i]!=-1){
				used[p[i]]=1;
				for (int j=x[i];j+1<x[p[i]];j++) cout<<j+1<<' '<<y[i]+1<<" F"<<endl;
				cout<<x[p[i]]<<' '<<y[i]+1<<' ';
				if (y[i]>y[p[i]]) cout<<'L'; else cout<<'R';
				cout<<endl;
				p[i]=-1;
			}
	}*/
	return 0;
}
