C语言中弓型矩阵的问题

Description
输出nm的弓型矩阵
Input
多组测试数据 每组输入2个整数 n和m(不大于20)
Output
输出n
m的弓型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右)
Sample Input

4 3

Sample Output

1 2 3
6 5 4
7 8 9
12 11 10

我写的程序是

#include <stdio.h>
#define MAXN 20
#define MAXM 20
int main(void)
{   int i=0,j=0,s=1,x=0,m,n;
    int a[MAXN][MAXM];
    
    while((scanf("%d%d",&n,&m))&&(m<=20)&&(n<=20)){
        s=1;
        x=0;
        for(i=0;i<n;i++){
            if(s%2==0){for(j=m-1;j>=0;j--){x=x+1;a[i][j]=x;}}
            else{for(j=0;j<m;j++){x=x+1;a[i][j]=x;}}
            s=s+1;}
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){printf("%2d ",a[i][j]);}    
            printf("\n");}
        }
    return 0;}

提交答案提示我输出超限,这就不知道怎么整了,能否请教一下各位。