#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y, dx, dy;
} e[100005];
bool cmp(const node &a, const node &b) {
  if (a.dx == b.dx) return a.dy < b.dy;
  return a.dx < b.dx;
}
void go(int x, int y) {
  if (x > 0)
    printf("1 %d R\n", x);
  else if (x < 0)
    printf("1 %d L\n", -x);
  if (y > 0)
    printf("1 %d U\n", y);
  else if (y < 0)
    printf("1 %d D\n", -y);
}
void back(int x, int y) {
  if (x > 0)
    printf("1 %d L\n", x);
  else if (x < 0)
    printf("1 %d R\n", -x);
  if (y > 0)
    printf("1 %d D\n", y);
  else if (y < 0)
    printf("1 %d U\n", -y);
}
int main() {
  int i, n, ans;
  while (scanf("%d", &n) != EOF) {
    ans = 0;
    for (i = 1; i <= n; i++) {
      scanf("%d%d", &e[i].x, &e[i].y);
      if (e[i].x >= 0)
        e[i].dx = e[i].x;
      else
        e[i].dx = -e[i].x;
      if (e[i].y >= 0)
        e[i].dy = e[i].y;
      else
        e[i].dy = -e[i].y;
      ans += 2 + 2 * (e[i].dx != 0) + 2 * (e[i].dy != 0);
    }
    printf("%d\n", ans);
    sort(e + 1, e + n + 1, cmp);
    for (i = 1; i <= n; i++) {
      go(e[i].x, e[i].y);
      printf("2\n");
      back(e[i].x, e[i].y);
      printf("3\n");
    }
  }
  return 0;
}
