#include<bits/stdc++.h>

using namespace std;

typedef long long int64;

int H, N, P, M, K, S[500];


int main()
{
  memset(S, -1, sizeof(S));

  cin >> H >> N >> P >> M >> K;
  for(int i = 0; i < M; i++) {
    int a, b;
    cin >> a >> b;
    S[--a] = --b;
  }

  vector< vector< double > > curr(K + 1, vector< double >(N, 0.0));
  curr[0][--P] = 1.0;
  for(int i = H - 1; i >= 0; i--) {
    vector< vector< double > > next(K + 1, vector< double >(N, 0.0));
    if(S[i] >= 0) {
      for(int j = 0; j <= K; j++) {
        for(int k = 0; k < N; k++) {
          if(S[i] == k) next[j][k + 1] += curr[j][k];
          else if(S[i] + 1 == k) next[j][k - 1] += curr[j][k];
          else next[j][k] += curr[j][k];
        }
      }
    } else {
      for(int j = 0; j <= K; j++) {
        for(int k = 0; k < N; k++) {
          next[j][k] += curr[j][k];
        }
      }
      for(int j = 1; j <= K; j++) {
        for(int k = 0; k < N; k++) {
          for(int S_i = 0; S_i + 1 < N; S_i++) {
            if(S_i == k) next[j][k + 1] += curr[j - 1][k];
            else if(S_i + 1 == k) next[j][k - 1] += curr[j - 1][k];
            else next[j][k] += curr[j - 1][k];
          }
        }
      }
    }
    curr.swap(next);
  }

  double ret = 0, all = 0;
  for(int i = 0; i < N; i++) {
    all += curr[K][i];
    ret = max(ret, curr[K][i]);
  }
  cout << fixed << setprecision(10) << ret / all << endl;
}