#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
struct people{
int id;
int v;
int t;
};
vector<people> sage;
vector<people> noble;
vector<people> fool;
vector<people> small;
vector<people> notatall;
bool cmp(people a,people b){
int gra=a.v+a.t,grb=b.v+b.t;
if(gra!=grb){
return gra>grb;
}else if(a.v!=b.v){
return a.v>b.v;
}else{
return a.id<b.id;
}
}
int main(){
int n,low,high;
scanf("%d %d %d",&n,&low,&high);
int total=0;
for(int i=0;i<n;i++){
people temp;
scanf("%d %d %d",&temp.id,&temp.v,&temp.t);
if(temp.v<low||temp.t<low){
notatall.push_back(temp);
}else if(temp.v>=high&&temp.t>=high){
sage.push_back(temp);
}else if(temp.t<high&&temp.v>=high){
noble.push_back(temp);
}else if(temp.t<high&&temp.v<high&&temp.v>=temp.t){
fool.push_back(temp);
}else{
small.push_back(temp);
}
}
sort(sage.begin(),sage.end(),cmp);
sort(noble.begin(),noble.end(),cmp);
sort(fool.begin(),fool.end(),cmp);
sort(small.begin(),small.end(),cmp);
int num=sage.size()+noble.size()+fool.size()+small.size();
printf("%d\n",num);
for(int i=0;i<sage.size();i++){
printf("%d %d %d\n",sage[i].id,sage[i].v,sage[i].t);
}
for(int i=0;i<noble.size();i++){
printf("%d %d %d\n",noble[i].id,noble[i].v,noble[i].t);
}
for(int i=0;i<fool.size();i++){
printf("%d %d %d\n",fool[i].id,fool[i].v,fool[i].t);
}
for(int i=0;i<small.size();i++){
printf("%d %d %d\n",small[i].id,small[i].v,small[i].t);
}
return 0;
}