#include <bits/stdc++.h>

using namespace std;
map<int, int> mp;
priority_queue<int, vector<int>, greater<int>> q; // 小根堆
set<int> s;
int main(){
    int n, m, k;
    cin >> n >> m >> k;
    int res = 0, ans = 0; // res 记次数, ans 记金币
    for(int i = 0 ; i < n ; i ++)
    {
        for(int j = 0 ; j < m ; j ++)
        {
            int x;
            cin >> x; // x是我们输入进去的数字
            if(x == 0) continue; // 如果是0就不去管
            mp[x] ++; // 统计数字x有多少个
            s.insert(x);
        }
    }
    /*
    此时的map长这样{
        1:4
    }
    所以我们只需要for循环从低到高即可
    */
    for(auto &i : s) q.push(i);

    while(q.size())
    {
        int a = q.top();
//         cout << a << endl;
        q.pop();
        int b = mp[a]; // 取出价值为a的有多少张
        res += b / 2; // 计算能合成多少次
//         cout << b << endl << "------------" << endl;
        if(mp[a+1]==0 and mp[a] >= 2) { // 如果本来不存在
            q.push(a+1);
        }
        mp[a+1] += b/2; // 将合成的次数记录
        if(a+1>=k) ans += b/2;
    }
    
    cout << res << ' ' << ans << endl;
    return 0;
}