#include <algorithm>
#include <bitset>
#include <cmath>
#include <complex>
#include <cstdio>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <sys/types.h>
#include <unistd.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>

#pragma region macros
#define _overload(_1, _2, _3, name, ...) name
#define _rep(i, n) _range(i, 0, n)
#define _range(i, a, b) for (int i = int(a); i < int(b); ++i)
#define rep(...) _overload(__VA_ARGS__, _range, _rep, )(__VA_ARGS__)
#define _rrep(i, n) _rrange(i, n, 0)
#define _rrange(i, a, b) for (int i = int(a) - 1; i >= int(b); --i)
#define rrep(...) _overload(__VA_ARGS__, _rrange, _rrep, )(__VA_ARGS__)
#pragma endregion macros

using namespace std;

template <class T> bool chmax(T &a, const T &b) {
    return (a < b) ? (a = b, 1) : 0;
}
template <class T> bool chmin(T &a, const T &b) {
    return (b < a) ? (a = b, 1) : 0;
}

using ll    = long long;
using R     = long double;
const R EPS = 1e-9L;  // [-1000,1000]->EPS=1e-8 [-10000,10000]->EPS=1e-7
inline int sgn(const R &r) {
    return (r > EPS) - (r < -EPS);
}
inline R sq(R x) {
    return sqrt(max(x, 0.0L));
}

const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};

const pid_t pid = getpid();
// Problem Specific Parameter:

ll p[1010][1010];
ll psum[1010];
ll p2sum[1010];

int main(void) {
    std::cin.tie(0);
    std::ios::sync_with_stdio(false);

    int m, k;
    cin >> m >> k;

    rep(i, k) {
        rep(j, m) {
            cin >> p[i][j];
            psum[i] += p[i][j];
            p2sum[i] += 1LL * p[i][j] * p[i][j];
        }
    }


    const ll vsum = (psum[k - 1] - psum[0]) / (k - 1);
    ll y          = -1;

    rep(i, 1, k - 1) {
        const ll v = (psum[i] - psum[i - 1]);
        if (v != vsum) {
            y = i;
            break;
        }
    }

    ll x;
    rep(j, m) {
        const ll v      = (psum[y] - psum[y - 1]);
        const ll modify = vsum - v;

        p2sum[y] -= p[y][j] * p[y][j];
        p[y][j] += modify;
        p2sum[y] += p[y][j] * p[y][j];

        set<ll> s;
        rep(i, 1, k - 1) {
            const ll d2 = (p2sum[i - 1] + p2sum[i + 1]) - 2LL * p2sum[i];
            s.insert(d2);
        }

        if (s.size() == 1) {
            x = p[y][j];
            break;
        }

        p2sum[y] -= p[y][j] * p[y][j];
        p[y][j] -= modify;
        p2sum[y] += p[y][j] * p[y][j];
    }

    cout << y << " " << x << endl;
    return 0;
}