#include<stdio.h>
#include<math.h>
int dirOri[50][2]={{}},dirOri2[50][2]={{}},dirTar[50][2]={{}}; //array[???][??????/??????]

int check1(int vertex)
{
    int i,j;

    for(i=0;i<vertex-1;i++)
    {
        if(dirTar[i][0]!=dirOri[i][0] || dirTar[i][1]!=dirOri[i][1])
        {
            return 0;
        }
    }
    return 1;
}

int check2(int vertex)
{
    int i,j;

    for(i=0;i<vertex-1;i++)
    {
        if(dirTar[i][0]!=dirOri2[i][0] || dirTar[i][1]!=dirOri2[i][1])
        {
            return 0;
        }
    }
    return 1;
}

void initializeOri(void)
{
    int i,j;
    for(i=0;i<50;i++)
    {
        for(j=0;j<2;j++)
        {
            dirOri[i][j]=0;
            dirOri2[i][j]=0;
        }
    }
    return;
}

void initializeTar(void)
{
    int i,j;
    for(i=0;i<50;i++)
    {
        for(j=0;j<2;j++)
        {
            dirTar[i][j]=0;
        }
    }
    return;
}

void analyzeOri(int coor[][2], int vertex)
{
    int i;
    int distance;
    initializeOri();

    for(i=1;i<vertex;i++)
    {
        if(coor[0][i-1]==coor[0][i])
        {
            distance=coor[0][i]-coor[0][i-1];
            if(distance>0)
            {
                dirOri[i-1][0]=3;
                dirOri2[vertex-i][0]=1;
            }
            else
            {
                dirOri[i-1][0]=1;
                dirOri2[vertex-i][0]=3;
            }
        }
        else
        {
            distance=coor[1][i]-coor[0][i-1];
            if(distance>0)
            {
                dirOri[i-1][0]=0;
                dirOri2[vertex-i][0]=2;
            }
            else
            {
                dirOri[i-1][0]=2;
                dirOri2[vertex-i][0]=0;
            }
        }
        dirOri[i-1][1]=abs(distance);
        dirOri2[vertex-i][1]=abs(distance);
    }
    return;
}

int analyzeTar(int coor[][2], int vertex)
{
    int i;
    int distance;
    initializeTar();

    for(i=1;i<vertex;i++)
    {
        if(coor[0][i-1]==coor[0][i])
        {
            distance=coor[0][i]-coor[0][i-1];
            if(distance>0)
            {
                dirTar[i-1][0]=3;
            }
            else
            {
                dirTar[i-1][0]=1;
            }
        }
        else
        {
            distance=coor[1][i]-coor[0][i-1];
            if(distance>0)
            {
                dirTar[i-1][0]=0;
            }
            else
            {
                dirTar[i-1][0]=2;
            }
        }
        dirTar[i-1][1]=abs(distance);
    }

    int response=check1(vertex);

    if(response==1)
    {
        return 1;
    }
    else
    {
        response=check2(vertex);
        if(response==1)
        {
            return 1;
        }
    }
    return 0;
}

int main(void)
{
    int i,j;
    int n,m;

    while(1)
    {
        scanf("%d",&n);
        if(n==0)
        {
            break;
        }

        scanf("%d",&m);
        int origin[2][m];

        for(j=0;j<m;j++)
        {
            scanf("%d %d",&origin[0][j],&origin[1][j]);
            //printf("%d %d\n",origin[0][j],origin[1][j]);
        }
        analyzeOri(origin,m);

        for(i=1;i<=n;i++)
        {
            scanf("%d",&m);
            //printf("n=%d,m=%d\n",i,m);
            int target[2][m];
            for(j=0;j<m;j++)
            {
                scanf("%d %d",&target[0][j],&target[1][j]);
            }

            int response=analyzeTar(target,m);

            if(response==1)
            {
                printf("%d\n",j);
            }
        }
        printf("+++++\n");
    }
    return 0;
}