小孩报数问题,第17行的为什么要w-2?

#include<stdio.h>
#include<string.h>
char a[64][15];
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
int W, S,m;
for (int i = 0; i < N; i++)
{
scanf("%s", &a[i]);
}
scanf("%d,%d", &W, &S);
//从第W个开始,第W个放在a[n-1]里,减一次
//报到第S个,第S个相对W的距离实质为S-1,减一次
W=W-2;
int n=N;
while (n--)
{
m = S;
while (m--)
{
do
{
W = (W + 1) % N;
//如果不等则跳出
} while (strcmp(a[W], " ") == 0);
}
printf("%s\n", a[W]);
strcpy(a[W], " ");
}
}

return 0;

}

img