#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node
{
int ID_Number, Virtue_Grade, Talent_Grade, total;
};
int cmp(node n1, node n2)
{
if(n1.total != n2.total)
{
return n1.total > n2.total;
}
if(n1.Virtue_Grade != n2.Virtue_Grade)
{
return n1.Virtue_Grade > n2.Virtue_Grade;
}
return n1.ID_Number < n2.ID_Number;
}
int main()
{
int n, l, h;
scanf("%d%d%d", &n, &l, &h);
vector<node> v[4];
int i;
node nod;
for(i = 1; i <= n; i++)
{
scanf("%d%d%d", &nod.ID_Number, &nod.Virtue_Grade, &nod.Talent_Grade);
nod.total = nod.Virtue_Grade + nod.Talent_Grade;
if(nod.Talent_Grade >= l && nod.Virtue_Grade >= l)
{
if(nod.Virtue_Grade >= h && nod.Talent_Grade >= h)
{
v[0].push_back(nod);
}
else if(nod.Talent_Grade < h && nod.Virtue_Grade >= h)
{
v[1].push_back(nod);
}
else if(nod.Talent_Grade < h && nod.Virtue_Grade < h && nod.Virtue_Grade >= nod.Talent_Grade)
{
v[2].push_back(nod);
}
else
{
v[3].push_back(nod);
}
}
}
int count = 0, size[4];
for(i = 0; i < 4; i++)
{
size[i] = v[i].size();
count += size[i];
if(size[i] > 0)
{
sort(v[i].begin(), v[i].end(), cmp);
}
}
printf("%d\n", count);
int j;
for(i = 0; i < 4; i++)
{
for(j = 0; j < size[i]; j++)
{
nod = v[i][j];
printf("%08d %d %d\n", nod.ID_Number, nod.Virtue_Grade, nod.Talent_Grade);
}
}
system("pause");
return 0;
}