#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define debug(x) cout << #x << " = " << x << '\n';
using namespace std;

const int MAXN=200009,INF=2000000000000000000;

int n,m,k;
pair<int,int> a[MAXN],b[MAXN];

int Dist(pair<int,int> a,pair<int,int> b){
    return (a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second);
}

void brute(){
    int rez=INF;
    int l1,l2;
    multiset<pair<int,int>> trena;
    for(int ii=0; ii<k; ii++) trena.insert(a[ii]);
    for(int i=1; i<=n+1-k; i++){
        trena.erase(a[i-1]);trena.insert(a[i+k-1]);
        multiset<pair<int,int>> trenb;
        for(int jj=0; jj<k; jj++) trenb.insert(b[jj]);
        for(int j=1; j<=m+1-k; j++){
            trenb.erase(b[j-1]);trenb.insert(b[j+k-1]);
            int rezz=0;
            for(int z=0; z<k; z++){
                pair<int,int> trazen1,trazen2;
                int cnt=0;
                for(auto x:trena){
                    if(z==cnt){
                        trazen1=x;
                        break;
                    }
                    cnt++;
                }
                cnt=0;
                for(auto x:trenb){
                    if(z==cnt){
                        trazen2=x;
                        break;
                    }
                    cnt++;
                }
                rezz=max(rezz,Dist(trazen1,trazen2));
            }
            if(rezz<rez){
                l1=i;l2=j;
                rez=rezz;
            }
        }
    }
    cout << rez << endl;
    for(int i=0; i<=k-1; i++)
        cout << l1+i << " " << l2+i << endl;
}


signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    cin >> n >> m >> k;
    for(int i=1; i<=n; i++) cin >> a[i].first >> a[i].second;
    for(int i=1; i<=m; i++) cin >> b[i].first >> b[i].second;
    brute();



    return 0;
}
/*
1
7 8 3
1 5 7
1 6
6 2
2 7
7 4
4 3
4 2
3 6
4 5


*/