#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;
}