// https://szkopul.edu.pl/problemset/problem/dqDbPTjXtS9KK9xXHD4qAiie/site/?key=statement
// Wspinaczka
#include <bits/stdc++.h>
using namespace std;
#define int long long
constexpr int sizik = 100 * 1001;
constexpr int MAX_K = 8;
constexpr int sizik2 = 1 << (MAX_K);
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
int f[sizik];
int kra[sizik];
int dp[sizik][sizik2];
void solve() {
int n, m, k;
std::cin >> n >> m >> k;
for (int i = 1; i <= n; i++) {
std::cin >> f[i];
}
for (int i = 0; i < m; i++) {
int a, b;
std::cin >> a >> b;
b = b - a - 1;
kra[a] |= (1 << b);
}
for (int i = n; i >= 1; i--) {
for (int j = 0; j < (1 << k); j++) {
if (j & 1) {
dp[i][j] = dp[i + 1][(j >> 1) | kra[i]] + f[i];
} else {
dp[i][j] = dp[i + 1][j >> 1];
}
}
}
for (int i = 1; i <= n; i++) {
int ans = dp[i][((kra[i] & ~(1 << (k - 1))) << 1) | 1];
std::cout << ans << '\n';
}
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}