Go: package main

import "fmt"
import "strconv"

func main() {
  for i := 1; i <= 9; i++ {
    for j := 1; j <= 9; j++ {
      res := i * j
      fmt.Println(
        strconv.Itoa(i) + "x" + strconv.Itoa(j) + "=" + strconv.Itoa(res)
      )
    }
  }
}

C++: #include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<cmath>
#include<cstdlib>
#include<cassert>

#define REP(i, b, n) for(int i =b; i<(int) n; i++)
#define rep(i, n) REP(i, 0, n)
#define FOR(it, o) for(__typeof((o).begin()) it = (o).begin(); it != (o).end(); ++it)

using namespace std;

enum{
  H = 501, N = 101, KK = 101
};

int h, n, p, m, K;
double dp[H][N][KK];
bool usedHeight[H], canMove[H][N];
int atl[H];
double solve(int cnt){
  rep(i, H)rep(j, N)rep(k, KK)dp[i][j][k] = 0;
  dp[h][p-1][0] = 1;
  for(int i = h; i>0; i--){
    rep(j, n){
      rep(k, K+1){
        //cout << i << ' ' << j << ' ' << k << ' ' << dp[i][j][k]<< endl;;
        if(canMove[i][j-1]){
          dp[i-1][j-1][k] += dp[i][j][k];
        }
        else if(canMove[i][j]){
          dp[i-1][j+1][k] += dp[i][j][k];
        }
        else if(!usedHeight[i] && k < K){
          int tmp=n-1;
          if(j > 0){//left
            dp[i-1][j-1][k+1] += dp[i][j][k]; 
            tmp--;
          }
          if(j < n-1){//right
            dp[i-1][j+1][k+1] += dp[i][j][k];
            tmp--;
          }
          
          //mid
          //dp[i-1][j][k] += dp[i][j][k] * remain;
          //if (k+i-1 >= K){

          if (k+atl[i] > K){
            dp[i-1][j][k+1]+=dp[i][j][k]*tmp;
            dp[i-1][j][k]  +=dp[i][j][k];// * remain;
          }else {
            dp[i-1][j][k+1]+=dp[i][j][k]*tmp;
          }
        }
        else {
          dp[i-1][j][k] += dp[i][j][k];
        }
      }
    }       
  }
  double ret = 0,sum=0;
  rep(i, n){
    ret = max(ret, dp[0][i][K]);
    sum+=dp[0][i][K];
  }
  //cout << endl;
  //cout <<"proba sum " <<  sum << endl;
  return ret/sum;
}

int main(){
  while(cin >> h >> n >> p >> m >> K){
    rep(i, H+1){
      usedHeight[i] = false;
      rep(j, N){
        canMove[i][j] = false;
      }
    }
    rep(i, m){
      int a, b;
      cin >> a >> b;
      canMove[a][b-1] = true;
      usedHeight[a] = true;
    }
    rep(i,H+1)atl[i]=0;
    REP(i,1,H+1){
      atl[i]+=atl[i-1];
      if (!usedHeight[i])atl[i]++;
    }

    int cnt = (h - m ) * (n-1);
    printf("%.10f\n", solve(cnt));
  }

}

C++: #include <iostream>
using namespace std;

int main() {
	for(int i=1; i<10; i++){
              for(int J=0; j<10; j++){
                      printf("%dx%d=%d", i, j, i*j);
              }
        }
	return 0;
}

C++: #include<cstdio>
main(){
 FILE *fp = fopen("unagi","w");
 fprintf(fp,"unagi");

}

C++: #include <iostream>

using namespace std;

int main( void ){
  int i,j;
  
  for(i = 1;i <= 9;i++){
    for(j = 1;j <= 9;j++){
      cout << i << "x" << j << "=" << i*j << endl;
    }
  }
  return 0;
}

C++: #include<iostream>

using namespace std;

int main(){

	for(int i=1;i<10;i++)
	for(int j=1;j<10;j++)
	cout << i << "x" << j << "=" << i*j << endl;

	return 0;
}

C++: #include <iostream>
using namespace std;

int a,b;

int main(void){
    for(int i=1;i<=9;i++){
        for(int j=1;j<=9;j++){
            cout << i << 'x' << j << '=' << i*j << endl;
        }
    }
    return 0;
}

C++: #include<iostream>
using namespace std;

int main()
{
    for(int i=1;i<=9;i++)
        for(int j=1;j<=9;j++)
            cout<<i<<'*'<<j<<'='<<i*j<<endl;
    return 0;
}

C++: #include <iostream>
using namespace std;

int main(void) {
        int a;
        int b;

        for (a=1; a < 10; a++) {
                for (b=1; b < 10; b++) {
                        cout << a << "x" << b << "=" << a*b << endl;
                }
        }

        return 0;
}

C++: #include<cstdio>
 
int main(){
    int i, j;
    for(i = 1; i <= 9; i++){
        for(j = 0; j <= 9; j++){
            printf("%dx%d=%d\n", i, j, i * j);
        }
    }
    return 0;
}

C++: #include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <deque>
#include <algorithm>
#include <utility>
#include <functional>
#include <sstream>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <climits>
using namespace std;
inline int toInt(string s) { int v; istringstream sin(s); sin >> v; return v;}
template<class T> inline string toString(T x) { ostringstream sout; sout << x; return sout.str();}
typedef vector<int> vi;
typedef vector<vi>  vvi;
typedef vector<string> vs;
typedef pair<int, int> pii;
typedef long long ll;
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(),(a).rend()
#define EACH(t,i,c) for(t::iretator i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define REP(i,n) FOR(i,0,n-1)
const double EPS = 1e-10;
const double PI = acos(-1.0);

int main() {
	FOR(i, 1, 9) {
		FOR(j, 1, 9) {
			cout << i << "x" << j << "=" << i*j << endl;
		}
	}

	return 0;
}

C++: #include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <sstream>

using namespace std;

int main()
{
	vector<string> sv;
	for (int i = 1; i <= 9; i++){
		for (int j = 1; j <= 9; j++){
			stringstream ss;
			ss << i << '*' << j << '=' << i*j << '\n';
			string temp = ss.str();
			sv.push_back(temp);
		}
	}

	sv.back().erase(sv.back().find('\n'));

	for_each(sv.begin(), sv.end() ,
		[](string tmp){
		cout << tmp;
		}
	);


}

C++: #include <cstdio>
#include <iostream>
using namespace std;

int main(void)
{
    int i, j;

    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%dx%d=%d\n", i, j, i*j);
        }
    }

    return 0;
}

C++: int i,j;main(){for(;++i<=9;){for(j=1;j<=9;){printf("%dx%d=%d\n",i,j++,i*j);}}}

C++: #include <iostream>
using namespace std;

int main()
{
    int i, j;

    for(i=1; i<10; i++){
        for(j=1; j<10; j++){
            cout << i << "x" << j << "=" << i*j <<endl;
        }
    }
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define FOR(i, s, n) for(int i = s; i < (int)n; i++)
#define per(i, n) for(int i = n; i >= 0; i--)
#define ROF(i, s, n) for(int i = s; i >= (int)n; i--)
#define FORIT(i, A) for (auto i : A)
#define PRINT(x) cout << (x) << "\n"
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define MP make_pair
#define EACH(i, n) for (__typeof((n).begin()) i = (n).begin(); i != (n).end(); ++i)
#define SZ(a) int((a).size())
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())
#define CLR(a) memset((a), 0 ,sizeof(a))
#define NCLR(a) memset((a), -1 ,sizeof(a))
#define dump(x) cout << #x << " = " << (x) << "\n";
#define debug(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << "\n";
#define sq(n) (n) * (n)
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;
typedef vector<LL> VLL;
typedef vector<VLL> VVLL;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef priority_queue<int> maxpq;
typedef priority_queue< int, vector<int>, greater<int> > minpq;
typedef complex<double> P;
static const double EPS = 1e-10;
static const double PI = acos( -1.0 );
static const int mod = 1000000007;
static const int INF = 1 << 29;
static const LL LL_INF = 1152921504606846976;
static const int dx[] = { -1, 0, 1, 0, 1, -1, 1, -1 };
static const int dy[] = { 0, -1, 0, 1, 1, 1, -1, -1 };


int main() {
#ifdef _DEBUG
	printf( "debug\n" );
#endif
	for ( int i = 1; i < 10; i++ ) {
		for ( int j = 1; j < 10; j++ ) {
			printf( "%dx%d=%d\n", i, j, i * j );
		}
	}
	while(true);
	return 0;
}