//这是一个数学问题,
//注意到如果队列中去掉最矮的一个人,会使对数减少1(最矮的在队列两侧)或2(最爱的人在队列中)
//根据这个规律dp
#include<iostream>
using namespace std;
int n, m;
int main(){
while(true){
cin >> n >> m;
if(n == 0 && m == 0) break;
int dp[n + 1][m + 1];
for(int i = 0; i <= n; i++){
for(int j = 0; j <= m; j++){
dp[i][j] = 0;
}
}
dp[1][0] = 1;
dp[2][1] = 2;
dp[3][2] = 4;
dp[3][3] = 2;
for(int i = 4; i <= n; i++){
for(int j = i - 1; j <= m; j++){
dp[i][j] = ((i - 2) * dp[i - 1][j - 2] % 9937 + 2 * dp[i - 1][j - 1] % 9937) % 9937;//注意要多次模9997,不然会错
}
}
cout << dp[n][m] << endl;
}
return 0;
}
//presented by 大吉大利,今晚AC