#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <set>
#include <vector>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int n, p, q;
cin >> n >> p >> q;
vector<int>vec;
int x;
for (int i = 0; i < n; i++)
{
cin >> x;
vec.push_back(x);
}
sort(vec.begin(), vec.end());
int max0, max1, count = 0;
int len = vec.size();
sort(vec.begin(), vec.end());
for (int i = 0; i < p; i++)
{
max0 = 0;
max1 = 0;
for (int j = max(0, len - count - 2); j < vec.size(); j++)
if (vec[j] > vec[max0])
max0 = j;
for (int j = max(0, len - count - 2); j < vec.size(); j++)
if (vec[j] > vec[max1] && j != max0)
max1 = j;
if (sqrt(vec[max0]) == (int)sqrt(vec[max0]))
if ((int)sqrt(vec[max0]) % 2)
if (vec[max0] - vec[max1] == 1)
if (q > 0)
{
vec[max1] = (int)sqrt(vec[max1]);
continue;
}
vec[max0] = (int)sqrt(vec[max0]);
count++;
if (count > 9999)
{
sort(vec.begin(), vec.end());
count = 0;
}
}
sort(vec.begin(), vec.end());
for (int i = 0; i < q; i++)
{
max0 = 0;
for (int j = max(0, len - count - 2); j < vec.size(); j++)
if (vec[j] > vec[max0])
max0 = j;
vec[max0] = vec[max0] / 2;
if (count > 9999)
{
sort(vec.begin(), vec.end());
count = 0;
}
}
int sum = 0;
for (auto i = vec.begin(); i < vec.end(); i++)
sum += *i;
cout << sum;
return 0;
}