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

using namespace std;

const int maxn = 110;

struct TPoint 
{
	int y, x;
	TPoint(int yy, int xx) 
	{
		y = yy, x = xx;
	}
	TPoint() 
	{
		y = 0, x = 0;
	}
};

struct TAns 
{
	int y, x;
	char c;
};

bool TLess(const TPoint &a, const TPoint &b) 
{
	return (a.x < b.x || a.x == b.x && a.y > b.y);
}

int a[maxn][maxn], n, m, k, count;
TPoint p[maxn];
vector < TAns > ans;

void addMove(int y, int x, char c)
{
	TAns u;
	u.y = y;
	u.x = x;
	u.c = c;
	ans.push_back(u);
}

void rePlace(TPoint u, TPoint v) 
{
	for (int i = 0; i < m; ++i)
		if (p[i].y == u.y && p[i].x == u.x) {
			p[i] = v;
			return;
		}
}

bool makeMove()
{
	sort(p, p+m, TLess);
	for (int i = 0; i < m; ++i) {
		int y = p[i].y;
		while (p[i].x-1 >= 1 && y < n && a[y+1][p[i].x-1] != -1) 
			++y;
		if (p[i].x-1 >= 1 && y < n && (a[y][p[i].x] == 0 || y == p[i].y)) {
			for (int j = 0; j < y-p[i].y; ++j) 
				addMove(p[i].y+j, p[i].x, 'F');
			addMove(y, p[i].x, 'L');
			a[y+1][p[i].x-1] = a[p[i].y][p[i].x];
			a[p[i].y][p[i].x] = 0;
			--k;
			rePlace(p[i], TPoint(y+1, p[i].x-1));
			return true;
		}
		y = p[i].y;
		while (p[i].x+1 <= m && y < n && a[y+1][p[i].x+1] != -1) 
			++y;
		if (p[i].x+1 <= m && y < n && (a[y][p[i].x] == 0 || y == p[i].y)) {
			for (int j = 0; j < y-p[i].y; ++j) 
				addMove(p[i].y+j, p[i].x, 'F');
			addMove(y, p[i].x, 'R');
			a[y+1][p[i].x+1] = a[p[i].y][p[i].x];
			a[p[i].y][p[i].x] = 0;
			--k;
			rePlace(p[i], TPoint(y+1, p[i].x+1));
			return true;
		}
	}
	return false;
}

int main () 
{
	freopen("pawns.in", "r", stdin);
	freopen("pawns.out", "w", stdout);

	memset(a, 0, sizeof(a));

	cin >> n >> m >> k;
	for (int i = 1; i <= m; ++i) {
		a[1][i] = i;
		p[i-1].y = 1, p[i-1].x = i;
	}
	for (int i = 0; i < k; ++i) {
		int y, x;
		cin >> y >> x;
		a[y][x] = -1;
	}

	while (makeMove()) {
		/*for (int i = n; i >= 1; --i) {
			for (int j = 1; j <= m; ++j) {
				printf("%03d ", a[i][j]);
			}
			cout << endl;
		}
		cout << endl;*/
	}

	if (k == 0) {
		cout << "Yes" << endl << ans.size() << endl;
		for (unsigned int i = 0; i < ans.size(); ++i)
			cout << ans[i].y << " " << ans[i].x << " " << ans[i].c << endl;
	}
	else {
		cout << "No" << endl;
	}
	
	return 0;
}
