#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
//英语 看博友分析 抄博友程序 枚举
struct nod{
char name;
int x,y;
}da[100];
int main()
{
int tag=0;
while(1)
{
tag++;
int n;
cin>>n;
if(n==0)
{
break;
}
for(int i=0;i<n;i++)
{
cin>>da[i].name>>da[i].x>>da[i].y;
}
vector<string> ve;
string s=" ";
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
if(da[a].y==da[b].y&& da[a].x<da[b].x)
for(int c=0;c<n;c++)
{
if(da[b].x==da[c].x && da[b].y>da[c].y)
for(int d=0;d<n;d++)
{
if(da[d].x==da[a].x && da[c].y==da[d].y)
{
s[0]=da[a].name;
s[1]=da[b].name;
s[2]=da[c].name;
s[3]=da[d].name;
ve.push_back(s);
}
}
}
}
}
sort(ve.begin(),ve.end());
if(ve.size()==0)
{
cout<<"Point set "<<tag<<": No rectangles"<<endl;
}else
{
cout<<"Point set "<<tag<<":"<<endl;
for(int i=0;i<ve.size();i++)
{
cout<<' '<<ve[i];
if(i%10==9&& i!=(ve.size()-1))
{
cout<<endl;
}
}
cout<<endl;
}
}
}