#include <bits/stdc++.h>
using namespace std;
long long mInv[41];
long long fact[41];
long long factInv[41];
map<long, long> mymap;
vector<long> primes;
set<long> candidates;
set<string> dictionary;
set<string>::iterator it;
pair<set<string>::iterator, bool> ret;
string ai, phn;
long len;
bool doesMatch(long pos) {
  for (long i = 0; i < len; i++) {
    if (ai[pos + i] != phn[i]) return false;
  }
  return true;
}
long long getmoduloInv(long long n) {
  if (n == 1) return 1;
  if (mInv[n] > 0) return mInv[n];
  long long m = (-1 * 1000000007) / n;
  m += 1000000007;
  m *= getmoduloInv(1000000007 % n);
  mInv[n] = (m % 1000000007);
  return mInv[n];
}
long long grid[505][505];
vector<long> get_primes(unsigned long max) {
  char *sieve;
  sieve = new char[max / 8 + 1];
  long m = (max / 8) + 1;
  for (long long i = 0; i < m; i++) sieve[i] = 255;
  for (unsigned long x = 2; x <= max; x++)
    if (sieve[x / 8] & (0x01 << (x % 8))) {
      primes.push_back(x);
      for (unsigned long j = 2 * x; j <= max; j += x)
        sieve[j / 8] &= ~(0x01 << (j % 8));
    }
  delete[] sieve;
  return primes;
}
int main(void) {
  long long test_cases = 1;
  cout << setprecision(15) << fixed;
  long long n, k;
  cin >> n;
  long long nums[100005];
  long long minDist = 999999999999, maxDist;
  for (long i = 0; i < n; i++) {
    cin >> nums[i];
  }
  cout << nums[1] - nums[0] << " " << nums[n - 1] - nums[0] << endl;
  for (long i = 1; i + 1 < n; i++)
    cout << min(nums[i] - nums[i - 1], nums[i + 1] - nums[i]) << " "
         << max(nums[i] - nums[0], nums[n - 1] - nums[i]) << endl;
  cout << nums[n - 1] - nums[n - 2] << " " << nums[n - 1] - nums[0] << endl;
  return 0;
}
