#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

typedef pair<int,int> P;

// デバッグ出力
void debug(vector<P> v, int i){
	cout << "Line " << i << endl;
	for(int i=0 ; i < v.size() ; i++ ){
		cout << "(" << v[i].first << "," << v[i].second << ")" << endl;
	}
	cout << endl;
}

int main(){
	int n;
	while( cin >> n , n ){
		// 折れ線の集まり
		vector< vector<P> > list(n+1);
		// 答えの番号
		vector<int> ans;
		
		// n+1 の折れ線
		for(int i=0 ; i <= n ; i++ ){
			int m, sx, sy;
			vector<P> v;
			
			cin >> m;
			// 1つの折れ線は m 個の頂点を持つ
			for(int j = 0 ; j < m ; j++ ){
				int x,y;
				
				cin >> x >> y;
				if( j == 0 ){
					sx = x;
					sy = y;
					v.push_back( P(0,0) );
				}else{
					v.push_back( P(x-sx,y-sy) );
				}
			}
			//debug( v , i );
			list[i] = v;
		}
		
		// list[0]と同じものを探す
		for(int i=1 ; i <= n ; i++ ){
			// 頂点の数が同じかどうか
			if( list[0].size() == list[i].size() ){
				// 回転した4パターンを調べる
				for(int k=0 ; k < 4 ; k++ ){
					bool flag = true;
					// 90度回転
					for(int j=0 ; j < list[0].size() ; j++ ){
						int x = list[i][j].first;
						int y = list[i][j].second;
						list[i][j].first  = y ;
						list[i][j].second = -x;
					}
					//cout << "90 turn!" << endl;
					//debug( list[i] , i );
					// 各点が同じかどうか調べる
					for(int j=0 ; j < list[0].size() ; j++ ){
						int x1 = list[0][j].first;
						int y1 = list[0][j].second;
						int x2 = list[i][j].first;
						int y2 = list[i][j].second;
						if( x1 != x2 || y1 != y2 ){
							flag = false;
							break;
						}
					}
					if( flag ){
						ans.push_back( i );
						break;
					}
					
					// 逆から各点が同じかどうか調べる
					flag = true;
					vector<P> r_line = list[i];
					reverse( r_line.begin() , r_line.end() );
					int sx, sy;
					for(int j=0 ; j < r_line.size() ; j++ ){
						if( j == 0 ){
							sx = r_line[j].first;
							sy = r_line[j].second;
						}
						r_line[j].first -= sx;
						r_line[j].second -= sy;
					}
					//cout << "90 turn. reverse!" << endl;
					//debug( r_line , i );
					for(int j=0 ; j < list[0].size() ; j++ ){
						int x1 = list[0][j].first;
						int y1 = list[0][j].second;
						int x2 = r_line[j].first;
						int y2 = r_line[j].second;
						if( x1 != x2 || y1 != y2 ){
							flag = false;
							break;
						}
					}
					if( flag ){
						ans.push_back( i );
						break;
					}
				}
			}
		}
		
		// 解の出力
		for(int i=0 ; i < ans.size() ; i++ ){
			cout << ans[i] << endl;
		}
		cout << "+++++" << endl;
	}
}