#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int max(int *a, int l){
    int tmp=-1;
    if (l==1) return 0;
    if (l==2) 
        if (a[0]>a[1]) return 0;
        else return 1;
    tmp=max(&a[1],l-1)+1;
    if (a[0]>a[tmp]) return 0;
    else return tmp;
}

void swap(int *x, int *y){
    int tmp=*x;
    *x=*y;
    *y=tmp;
}

void sort(int *a, int l){
    int p;
    if (l<=1) return;
    p=max(a,l);
    printf("max %d at %d\n", a[p], p);
    swap(&a[0], &a[p]);
    sort(&a[1],l-1);
}

int main(int argc, char **argv){
    FILE *fin=fopen(argv[1], "r");
    int n, i, j, k;
    int *jedi;
    int *sith;
    fscanf(fin, "%d\n", &n);
    jedi=malloc(sizeof(int)*n*3);
    sith=malloc(sizeof(int)*n);
    memset(sith, 0, sizeof(int)*n);
    for(i=0; i<n; i++) {
        int buf[3];
        j=i*3;
        fscanf(fin, "%d %d %d\n", &buf[0],&buf[1],&buf[2]);
        printf("%d %d %d\n", buf[0], buf[1], buf[2]);
        sort(buf,3);
        printf("%d %d %d\n", buf[0], buf[1], buf[2]);
        for(k=0; k<3; k++)
            jedi[j+k]=buf[k];
    }

    for(i=0; i<n; i++)  
        printf("%d : %d %d\n", i, jedi[i*3], jedi[i*3+1]);

    k=0;
    for(i=0; i<n; i++){
        int to_add=1;
        for(j=0; j<n && to_add; j++){
            printf("%d : %d %d\n", i, jedi[i*3], jedi[i*3+1]);
            printf("%d : %d %d\n", j, jedi[j*3+1], jedi[j*3+2]);
            if (i!=j)
                if (jedi[j*3+1]>jedi[i*3] ||  jedi[j*3+2]>jedi[i*3+1])
                    to_add=0;
            printf("outcome: %d\n", to_add);
        }
        if (to_add) {
            sith[k]=i;
            k++;
        } 
    }
    printf("%d\n", k);
    for(i=0; i<k; i++)
        printf("%d ", sith[i]+1);
    printf("\n");
}

