#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 100;
long long A[maxn];
long long L[maxn];
long long R[maxn];
int main() {
  int n, k;
  cin >> n >> k;
  int i, j;
  long long sum = 0;
  for (i = 1; i <= n; i++) scanf("%lld", &A[i]), sum += A[i];
  sort(A + 1, A + 1 + n);
  memset(L, 0, sizeof L);
  memset(R, 0, sizeof R);
  for (i = 2; i <= n; i++) L[i] = L[i - 1] + (A[i] - A[i - 1]) * (i - 1);
  for (i = n - 1; i > 0; i--) R[i] = R[i + 1] + (A[i + 1] - A[i]) * (n - i);
  for (i = 2; i <= n; i++)
    if (L[i] > k) break;
  for (j = n - 1; j > 0; j--)
    if (R[j] > k) break;
  if (i - j > 1) {
    if (sum % n == 0)
      puts("0");
    else
      puts("1");
    return 0;
  }
  long long d = k - L[i - 1];
  long long Min;
  if (d < i - 1) {
    Min = A[i - 1];
  } else {
    d /= (i - 1);
    A[i - 1] += d;
    Min = A[i - 1];
  }
  long long Max;
  d = k - R[j + 1];
  if (d < n - j)
    Max = A[j + 1];
  else {
    d /= (n - j);
    A[j + 1] -= d;
    Max = max(A[j + 1], A[j]);
  }
  sum = sum % n ? 1 : 0;
  cout << max(Max - Min, sum) << endl;
  return 0;
}
