#include <bits/stdc++.h>

using namespace std;

const int nmax = 1e6 + 10;
const int Nmax = 2e6 + 10;
const long long infL = LLONG_MAX;

int n, N;
int a[Nmax], R[Nmax];

long long x;
long long sum[Nmax], allsum[Nmax], vcnt[Nmax], vsum[Nmax];
long long ans_cnt[Nmax], ans_sum[Nmax];

void input() {
    scanf("%d %lld", &n, &x);
    assert(1 <= n && n <= 100000);
    assert(1 <= x && x <= 1000000000);

    for (int i = 1; i <= n; ++i) {
        scanf("%d", &a[i]);
        assert(1 <= a[i] && a[i] <= 1000000);
    }
}

void compute_sums() {
    N = 2 * n - 1;
    for (int i = n + 1; i <= N; ++i)
        a[i] = a[i-n];

    for (int i = 1; i <= N; ++i)
        sum[i] = sum[i-1] + a[i],
        allsum[i] = allsum[i-1] + sum[i];

    //cerr << allsum[N];
}

long long sum_on_segment(int l, int r) {
    return sum[r] - sum[l-1];
}

long long allsum_on_segment(int l, int r) {
    return (allsum[r] - allsum[l-1]) - sum[l-1] * (r - l + 1);
}

void compute_segments() {
    int r = 0;
    for (int l = 1; l <= N; ++l) {
        r = max(r, l - 1);
        while (r < N && sum_on_segment(l, r + 1) <= x) r++;

        R[l] = min(r, l + n - 1);
    }
}

void update(int l, int r) {
    if (r < l) return;
    vsum[r] += sum_on_segment(l, r);
    vcnt[r]++; vcnt[l-1]--;
}

void compute_answers() {
    for (int i = 1; i <= N; ++i)
        update(i, R[i]);

    for (int i = N; i; --i) {
        ans_sum[i] = vsum[i]; ans_cnt[i] = vcnt[i];

        vsum[i-1] += vsum[i] - vcnt[i] * a[i];
        vcnt[i-1] += vcnt[i];
    }

    long long sum = 0, cnt = 0;
    for (int i = 1; i <= N; ++i) {
        ans_sum[i] += ans_sum[i-1], ans_cnt[i] += ans_cnt[i-1];
        if (i <= n) continue;
        if (i - n <= R[i-n])
            ans_sum[i] -= allsum_on_segment(i - n, R[i-n]); ans_cnt[i] -= R[i-n] - (i - n) + 1;
    }
}

void solve() {
    compute_sums();
    compute_segments();
    compute_answers();
}

void output() {
    //double ans = 0;
    for (int i = n; i <= N; ++i) {
        printf("%lld %lld\n", ans_sum[i], ans_cnt[i]);
        //ans += 1.0 * ans_sum[i] / ans_cnt[i];
        //printf("%lld %lld\n", ans_sum[i], ans_cnt[i]);
    }
    //printf("%.10f", ans);
}

int main()
{
    freopen("revenire.in","r",stdin);
    freopen("revenire.out","w",stdout);

    input();
    solve();
    output();

    return 0;
}
