#include <bits/stdc++.h>
using namespace std;
inline void in(int &n) {
  n = 0;
  int ch = getchar();
  int sign = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') sign = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    n = (n << 3) + (n << 1) + ch - '0', ch = getchar();
  }
  n = n * sign;
}
int ansA[1000006], ansB[1000006];
char ansC[1000006];
int curr;
void solve1(vector<pair<int, int> > &v) {
  for (int i = 0; i < v.size(); i++) {
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'R';
      curr++;
    }
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'U';
      curr++;
    }
    ansA[curr] = 2;
    curr++;
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'D';
      curr++;
    }
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'L';
      curr++;
    }
    ansA[curr] = 3;
    curr++;
  }
  return;
}
void solve4(vector<pair<int, int> > &v) {
  for (int i = 0; i < v.size(); i++) {
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'R';
      curr++;
    }
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'D';
      curr++;
    }
    ansA[curr] = 2;
    curr++;
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'U';
      curr++;
    }
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'L';
      curr++;
    }
    ansA[curr] = 3;
    curr++;
  }
  return;
}
void solve2(vector<pair<int, int> > &v) {
  for (int i = 0; i < v.size(); i++) {
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'L';
      curr++;
    }
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'U';
      curr++;
    }
    ansA[curr] = 2;
    curr++;
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'D';
      curr++;
    }
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'R';
      curr++;
    }
    ansA[curr] = 3;
    curr++;
  }
  return;
}
void solve3(vector<pair<int, int> > &v) {
  for (int i = 0; i < v.size(); i++) {
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'L';
      curr++;
    }
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'D';
      curr++;
    }
    ansA[curr] = 2;
    curr++;
    if (v[i].second >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].second;
      ansC[curr] = 'U';
      curr++;
    }
    if (v[i].first >= 1) {
      ansA[curr] = 1;
      ansB[curr] = v[i].first;
      ansC[curr] = 'R';
      curr++;
    }
    ansA[curr] = 3;
    curr++;
  }
  return;
}
int main() {
  int n;
  in(n);
  vector<pair<int, int> > Q1, Q2, Q3, Q4;
  for (int i = 1; i <= n; i++) {
    int x, y;
    in(x);
    in(y);
    if (x >= 0) {
      if (y >= 0) {
        Q1.push_back(pair<int, int>(x, y));
      } else {
        Q4.push_back(pair<int, int>(x, -y));
      }
    } else {
      if (y >= 0) {
        Q2.push_back(pair<int, int>(-x, y));
      } else {
        Q3.push_back(pair<int, int>(-x, -y));
      }
    }
  }
  sort(Q1.begin(), Q1.end());
  sort(Q2.begin(), Q2.end());
  sort(Q3.begin(), Q3.end());
  sort(Q4.begin(), Q4.end());
  solve1(Q1);
  solve4(Q4);
  solve2(Q2);
  solve3(Q3);
  printf("%d\n", curr);
  for (int i = 0; i < curr; i++) {
    if (ansA[i] == 1) {
      printf("%d %d %c\n", ansA[i], ansB[i], ansC[i]);
    } else {
      printf("%d\n", ansA[i]);
    }
  }
  return 0;
}
