#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
long long n, m, k, maks = -1e9;
struct tacka{
    long long x, y;
};
bool sortPoX(tacka t1, tacka t2){
    return t1.x < t2.x;
}
bool sortPoY(tacka t1, tacka t2){
    return t1.y < t2.y;
}
tacka niz1[200005], niz2[200005];
int main(){
    cin >> n >> m >> k;
    for(int i = 1; i <= n; i++)
        cin >> niz1[i].x >> niz1[i].y;
    for(int i = 1; i <= m; i++)
        cin >> niz2[i].x >> niz2[i].y;
    if(niz1[1].y == niz1[2].y){
        sort(niz1 + 1, niz1 + n + 1, sortPoX);
        sort(niz2 + 1, niz2 + m + 1, sortPoX);
        ///najlevlju mogu da spojim sa najlevljom na drugoj duzi ili sa najdesnjom koja je m - k + 1;
        ///ILI
        ///da najdesnju koja je n - k + 1 spojim sa najlevljom na drugoj ili sa najdesnjom koja je m - k + 1
        long long rast1 = ((niz1[1].x - niz2[1].x) * (niz1[1].x - niz2[1].x) + (niz1[1].y - niz2[1].y) * (niz1[1].y - niz2[1].y));
        long long rast2 = ((niz1[1].x - niz2[m - k + 1].x) * (niz1[1].x - niz2[m - k + 1].x) + (niz1[1].y - niz2[m - k + 1].y) * (niz1[1].y - niz2[m - k + 1].y));
        long long rast3 = ((niz1[n - k + 1].x - niz2[1].x) * (niz1[n - k + 1].x - niz2[1].x) + ((niz1[n - k + 1].y - niz2[1].y) * (niz1[n - k + 1].y - niz2[1].y)));
        long long rast4 = ((niz1[n - k + 1].x - niz2[m - k + 1].x) * (niz1[n - k + 1].x - niz2[m - k + 1].x) + (niz1[n - k + 1].y - niz2[m - k + 1].y) * (niz1[n - k + 1].y - niz2[m - k + 1].y));
        long long minrast = min({rast1, rast2, rast3, rast4});
        cout << minrast << endl;
        if(minrast == rast1){
            cout << 1 << " " << 1 << endl;
        }
        else if(minrast == rast2){
            cout << 1 << " " << m - k + 1 << endl;
        }
        else if(minrast == rast3){
            cout << n - k + 1 << " " << m - k + 1 << endl;
        }
        else
            cout << n - k + 1 << " " << m - k + 1 << endl;
        //cout << rast1 << endl << rast2 << endl << rast3 << endl << rast4 << endl;
        //cout << sqrt(minrast) << endl;
    }
    /*for(int i = 1; i <= n; i++)
        cout << niz1[i].x << " " << niz1[i].y << endl;

    for(int i = 1; i <= m; i++)
        cout << niz2[i].x << " " << niz2[i].y << endl;*/
    return 0;
}