#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const int INF = 1e9 + 5;
const int MOD = 1e9 + 7;
double pi = 2 * acos(0.0);
struct val {
  int com, x;
  char dir;
};
bool comp(pair<int, int> a, pair<int, int> b) {
  int x = abs(a.first) + abs(a.second);
  int y = abs(b.first) + abs(b.second);
  return x < y;
}
void solve() {
  int n;
  cin >> n;
  vector<pair<int, int> > a(n);
  for (int i = 0; i < n; ++i) cin >> a[i].first >> a[i].second;
  sort(a.begin(), a.end(), comp);
  vector<val> ans;
  for (int i = 0; i < n; ++i) {
    int x = a[i].first, y = a[i].second;
    char dir1, dir2;
    val pusher;
    if (x > 0)
      dir1 = 'R';
    else
      dir1 = 'L';
    if (y > 0)
      dir2 = 'U';
    else
      dir2 = 'D';
    if (x != 0) {
      pusher.com = 1;
      pusher.x = abs(x);
      pusher.dir = dir1;
      ans.push_back(pusher);
    }
    if (y != 0) {
      pusher.com = 1;
      pusher.x = abs(y);
      pusher.dir = dir2;
      ans.push_back(pusher);
    }
    pusher.com = 2;
    pusher.x = -1;
    ans.push_back(pusher);
    if (dir1 == 'R')
      dir1 = 'L';
    else
      dir1 = 'R';
    if (dir2 == 'U')
      dir2 = 'D';
    else
      dir2 = 'U';
    if (x != 0) {
      pusher.com = 1;
      pusher.x = abs(x);
      pusher.dir = dir1;
      ans.push_back(pusher);
    }
    if (y != 0) {
      pusher.com = 1;
      pusher.x = abs(y);
      pusher.dir = dir2;
      ans.push_back(pusher);
    }
    pusher.com = 3;
    pusher.x = -1;
    ans.push_back(pusher);
  }
  cout << ans.size() << '\n';
  for (int i = 0; i < ans.size(); ++i) {
    if (ans[i].x == -1)
      cout << ans[i].com << '\n';
    else
      cout << ans[i].com << ' ' << ans[i].x << ' ' << ans[i].dir << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  int t = 1;
  while (t--) solve();
  return 0;
}
