#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+10;
ll ans=0,sum_row,sum_column;
int N,M,T,is_row=0,is_column=0;
int X[maxn],Y[maxn];
int A[maxn],B[maxn],sum_A[maxn],sum_B[maxn];
int main(){
cin>>N>>M>>T;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
for(int i=1;i<=T;i++){
cin>>X[i]>>Y[i];
A[X[i]]++;
B[Y[i]]++;
}
if(T%N==0){
is_row=1;
for(int i=1;i<=N;i++){
sum_A[i]=sum_A[i-1]+A[i]-T/N;
}
sort(sum_A+1,sum_A+N+1);
if(N%2==0){
for(int i=1;i<=N;i++){
sum_row+=abs(sum_A[i]-sum_A[N/2]);
}
}
else {
for(int i=1;i<=N;i++){
sum_row+=abs(sum_A[i]-sum_A[(N+1)/2]);
}
}
}
if(T%M==0){
is_column=1;
for(int i=1;i<=M;i++){
sum_B[i]=sum_B[i-1]+B[i]-T/M;
}
sort(sum_B+1,sum_B+M+1);
if(M%2==0){
for(int i=1;i<=M;i++){
sum_column+=abs(sum_B[i]-sum_B[M/2]);
}
}
else {
for(int i=1;i<=M;i++){
sum_column+=abs(sum_B[i]-sum_B[(M+1)/2]);
}
}
}
if(is_column==1&&is_row==1){
cout<<"both "<<sum_row+sum_column<<endl;
}
else if(is_row==1){
cout<<"row "<<sum_row<<endl;
}
else if(is_column==1){
cout<<"column "<<sum_column<<endl;
}
else {
cout<<"impossible"<<endl;
}
return 0;
}
行和列互不影响,可以分开考虑。对于行,每行开始时先减去T/N,记为A[i],S[i]为A的前缀和,计算使其所有行变成0的最小步数即可,因为原问题是环状的,所以计算S[i]-S[k]的绝对值的之和的最小值即可,当k为中位数的时候最小。