#include
#include
#include
int main() {
int n, m;
scanf("%d%d", &n, &m);
gsl_matrix* mat = gsl_matrix_alloc(n, m);
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
int pom;
scanf("%d", &pom);
gsl_matrix_set(mat, i, j, pom);
}
}
gsl_matrix* nova_matrica = gsl_matrix_alloc((n + 2) / 2, (m + 2) / 2);
int ni = 0;
int nj = 0;
for(int i = 0; i < n; i += 2) {
nj = 0;
for(int j = 0; j < m; j += 2) {
int maks_sosed = gsl_matrix_get(mat, i, j);
if(j + 1 < m) { // deka postoi sosedot koj e na desno od momentalnata kelija
if(maks_sosed < gsl_matrix_get(mat, i, j + 1)) {
maks_sosed = gsl_matrix_get(mat, i, j + 1);
}
}
if(i + 1 < n) {
if(maks_sosed < gsl_matrix_get(mat, i + 1, j)) {
maks_sosed = gsl_matrix_get(mat, i + 1, j);
}
}
if(i + 1 < n && j + 1 < m) {
if(maks_sosed < gsl_matrix_get(mat, i + 1, j + 1)) {
maks_sosed = gsl_matrix_get(mat, i + 1, j + 1);
}
}
gsl_matrix_set(nova_matrica, ni, nj, maks_sosed);
nj++;
}
ni++;
}
for(int i = 0; i < ni; i++) {
for(int j = 0; j < nj; j++) {
printf("%lf ", gsl_matrix_get(nova_matrica, i, j));
}
printf("\n");
}
}
/*
5 5
1 7 5 0 4
2 3 18 -3 5
14 0 7 5 2
3 3 4 5 6
7 0 0 1 2
*.*/