#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline T cube(T x) {
  return x * x * x;
}
template <class T>
inline T quad(T x) {
  return x * x * x * x;
}
template <class T>
inline T powr(T x, T y) {
  T ret = (T)1;
  while (y--) ret *= x;
  return ret;
}
template <class T>
inline bool Equal(T x, T y) {
  return fabs(x - y) < 1e-7;
}
template <class T>
inline T bitSet(T n, T pos) {
  return n = n | ((T)1 << pos);
}
template <class T>
inline T bitReset(T n, T pos) {
  return n = n & ~((T)1 << pos);
}
template <class T>
inline bool bitCheck(T n, T pos) {
  return n & ((T)1 << pos);
}
template <class T>
inline T GCD(T a, T b) {
  if (a < 0) return GCD(-a, b);
  if (b < 0) return GCD(a, -b);
  return (b == 0) ? a : GCD(b, a % b);
}
template <class T>
inline T LCM(T a, T b) {
  if (a < 0) return LCM(-a, b);
  if (b < 0) return LCM(a, -b);
  return a * (b / GCD(a, b));
}
template <class T>
inline bool isPrime(T n) {
  if (n <= 1) return false;
  for (T i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
template <class T>
inline void debug(T x) {
  cout << "x = " << x << endl;
}
template <class T1, class T2>
inline void debug(T1 x, T2 y) {
  cout << "x = " << x << ", y = " << y << endl;
}
template <class T1, class T2, class T3>
inline void debug(T1 x, T2 y, T3 z) {
  cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
}
int dx[] = {+1, -1, +0, +0};
int dy[] = {+0, +0, +1, -1};
long long int a[200005];
int main() {
  long long int i, j, n, S, ans, d, total, low, high, x, y;
  scanf("%lld %lld", &n, &S);
  total = 0;
  for (i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    total += a[i];
  }
  for (i = 1; i <= n; i++) {
    low = n - 1;
    high = total - a[i];
    x = S - high;
    if (x <= 0) x = 1;
    y = S - low;
    if (y > a[i]) y = a[i];
    d = labs(x - y) + 1;
    printf("%lld ", a[i] - d);
  }
  return 0;
}
