#include #include #include using namespace std; struct Point { int x,y; bool operator ==(const Point& p) const { return x == p.x && y == p.y; } }; void Load(vector& v) { int m; cin >> m; for(int i = 0; i < m; ++i) { Point p; cin >> p.x >> p.y; v.push_back(p); } } void SetZero(vector& l, Point b) { for(int i = 0; i < (int)l.size(); ++i) { l[i].x -= b.x; l[i].y -= b.y; } } void Rotate(vector& l) { for(int i = 0; i < (int)l.size(); ++i) { Point p = l[i]; l[i].x = -p.y; l[i].y = p.x; } } int main() { int n; while(cin >> n && n) { vector base; Load(base); vector > b; SetZero(base, base[0]); for(int i = 0; i < 4; ++i) { b.push_back(base); Rotate(base); } SetZero(base, base[base.size()-1]); reverse(base.begin(), base.end()); for(int i = 0; i < 4; ++i) { b.push_back(base); Rotate(base); } /*for(int i = 0; i < 8; ++i) { for(int j = 0; j < (int)base.size(); ++j) cout << b[i][j].x << " " << b[i][j].y << endl; cout << endl; } return 0;*/ for(int i = 1; i <= n; ++i) { vector t; Load(t); SetZero(t, t[0]); for(int j = 0; j < 8; ++j) { if(b[j] == t) { cout << i << endl; break; } } } cout << "+++++" << endl; } }