OI XXX - wsp

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