#include <bits/stdc++.h>
using namespace std;
int n,m,K,id[100001];
int a[100001][101],b[101],c[101][101];
int solve(int x) {
int tot=0;
if(K==2)
for(int i=1; i<=m; b[i]^=a[x][i],i++) tot^=b[i]&a[x][i];
else
for(int i=1; i<=m; ++i)
for(int j=1; j<=m; c[i][j]+=a[x][i]*a[x][j],++j)
tot+=c[i][j]*a[x][i]*a[x][j];
return tot%K;
}
bool check(int x,int y) {
int tot=0;
for(int i=1; i<=m; ++i) tot+=a[x][i]*a[y][i];
return tot%K==0;
}
int main() {
scanf("%d%d%d",&n,&m,&K);
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
scanf("%d",&a[i][j]),a[i][j]%=K;
for(int i=1; i<=n; ++i) id[i]=i;
for(int OVO=5; OVO--; ) {
random_shuffle(id+1,id+n+1);
K==2?memset(b,0,sizeof b):memset(c,0,sizeof b);
for(int i=1; i<=n; ++i) if(solve(id[i])!=(i-1)%K)
for(int j=1; j<i; ++j) if(check(id[i],id[j])) {
if(id[i]>id[j]) swap(id[i],id[j]);
printf("%d %d\n",id[i],id[j]);
return 0;
}
}
puts("-1 -1");
return 0;
}
08-08
298
07-15
351