#include <stdio.h>

int main() {
    int n, m, i, j;
    // 读取二维数组的行数和列数
    scanf("%d %d", &n, &m);

    int arr[n][m];
    // 读取二维数组的元素
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    // 查找每行的最大值和最大值所在的列
    int row_max[n];
    int row_max_col[n];
    for (i = 0; i < n; i++) {
        row_max[i] = arr[i][0];
        row_max_col[i] = 0;
        for (j = 1; j < m; j++) {
            if (arr[i][j] > row_max[i]) {
                row_max[i] = arr[i][j];
                row_max_col[i] = j;
            }
        }
    }

    // 查找每列的最大值
    int col_max[m];
    for (j = 0; j < m; j++) {
        col_max[j] = arr[0][j];
        for (i = 1; i < n; i++) {
            if (arr[i][j] > col_max[j]) {
                col_max[j] = arr[i][j];
            }
        }
    }

    // 查找最大点
    for (i = 0; i < n; i++) {
        int max_val = row_max[i];
        int col_idx = row_max_col[i];
        if (max_val == col_max[col_idx]) {
            printf("%d %d %d\n", max_val, i + 1, col_idx + 1);
        }
    }

    return 0;
}
