#include <iostream>
#include <climits>
using namespace std;
#define int long long
int get_max(int arr[], int n);
bool isPossible(int arr[], int n, int painters, int t, int cur_time);
int32_t main()
{
int n, k, t;
int sum = 0;
cin >> n >> k >> t;
int length[n];
for (int i = 0; i < n; ++i)
{
cin >> length[i];
sum += length[i];
}
int start = get_max(length, n) * t, end = sum * t, ans = 0;
while (start <= end)
{
int mid = (start + end) / 2;
if (isPossible(length, n, k, t, mid))
{
end = mid - 1;
ans = mid;
}
else {
start = mid + 1;
}
}
cout << ans % 10000003 << endl;
return 0;
}
int get_max(int arr[], int n)
{
int x = INT_MIN;
for (int i = 0; i < n; ++i) {
x = max(x, arr[i]);
}
return x;
}
bool isPossible(int arr[], int n, int painters, int t, int cur_time)
{
int painters_req = 1, sum = 0;
for (int i = 0; i < n; ++i)
{
sum += arr[i];
if (sum * t > cur_time)
{
++painters_req;
sum = arr[i];
}
}
if (painters_req <= painters) {
return true;
}
else { return false; }
}