#include <bits/stdc++.h>
template <class T>
inline T lowbit(T x) {
  return x & (-x);
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline bool scan(T &ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return 0;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return 1;
}
const double pi = 3.14159265358979323846264338327950288L;
using namespace std;
int up[105][105], down[105][105];
long long cnt[105][105];
int n, m, x, y;
long long k;
int dfs_clock = 0;
void dfs(int x, int d) {
  if (!x && dfs_clock) return;
  for (int i = 0; i < m; i++) {
    if (d == 1)
      up[x][i] = dfs_clock++;
    else
      down[x][i] = dfs_clock++;
  }
  if (n == 1) return;
  if (d && x == n - 1) d *= -1;
  if (!d && x == 0) d *= -1;
  dfs(x + d, d);
}
int main() {
  memset(up, -1, sizeof(up));
  memset(down, -1, sizeof(down));
  cin >> n >> m >> k >> x >> y;
  x--, y--;
  dfs(0, 1);
  long long tmp = k / dfs_clock;
  memset(cnt, 0, sizeof(cnt));
  int more = k % dfs_clock;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      long long sum = 1LL * (up[i][j] != -1) + (down[i][j] != -1);
      cnt[i][j] += sum * tmp;
      if (more) {
        if (up[i][j] != -1 && more - 1 >= up[i][j]) cnt[i][j]++;
        if (down[i][j] != -1 && more - 1 >= down[i][j]) cnt[i][j]++;
      }
    }
  long long Max = 0, Min = 1e18;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      Max = max(Max, cnt[i][j]);
      ;
      Min = min(Min, cnt[i][j]);
    }
  cout << Max << " " << Min << " " << cnt[x][y] << endl;
  return 0;
}
