#include<iostream>
#include<cstdio>
using namespace std;

int h,n,p,m,k,a,b;
double ans[501][101][101];
bool check[501];
bool amida[501][100];
double prob;
int use[501];

int main(){
  cin >> h >> n >> p >> m >> k;

  for(int i=1;i<=h;i++){
    check[i] = false;
    for(int j=1;j<n;j++)amida[i][j] = false;
  }

  for(int i=0;i<m;i++){
    cin >> a >> b;
    check[a] = true;
    amida[a][b] = true;
  }

  int tmp = 0;
  for(int i=1;i<=h;i++){
    if(!check[i])tmp++;
    use[i] = tmp;
  }

  for(int i=0;i<=h;i++){
    for(int j=1;j<=n;j++){
      for(int l=0;l<=k;l++)ans[i][j][l] = 0.0;
    }
  }

  ans[h][p][k] = 1.0;

  for(int i=h;i>0;i--){
    for(int j=1;j<=n;j++){
      int up = min(use[i],k);
      for(int l=0;l<=up;l++){
	if(check[i]){
	  if(j<n && amida[i][j])ans[i-1][j][l] = ans[i][j+1][l];
	  else if(j>1 && amida[i][j-1])ans[i-1][j][l] = ans[i][j-1][l];
	  else ans[i-1][j][l] = ans[i][j][l];
	}else{
	  if(j<n && l>0)ans[i-1][j][l-1] += ( (double)l/use[i] ) * ans[i][j+1][l] / (n-1);
	  if(j>1 && l>0)ans[i-1][j][l-1] += ( (double)l/use[i] ) * ans[i][j-1][l] / (n-1);
	  ans[i-1][j][l-1] += ( (double)(n-3)/(n-1) ) * ( (double)l/use[i] ) * ans[i][j][l];
	  if(j==1 || j==n)ans[i-1][j][l-1] += (1.0/(n-1) ) * ( (double)l/use[i] ) * ans[i][j][l];
	  ans[i-1][j][l] += ( (double)(use[i]-l)/use[i] ) * ans[i][j][l];
	}
      }
    }
  }

  double res = 0.0;

  for(int i=1;i<=n;i++)res = max(res,ans[0][i][0]);
  
  printf("%.8lf\n",res);
}