为什么,哪里错了 我输入2 29依旧是YES

题目:
输入2100年某一天的月和日的值,输出这一天是否为合法日期(表达式会很长)。
输入格式:
输入两个整数,表示月和日。
输出格式:
合法日期输出YES,否则输出NO。

内容:
#include
int main()
{
int m,d;
scanf("%d %d",&m,&d);
if(m==2 && d<=28)
{
printf("YES");
}
else if(m==1,3,5,7,8,10,12 and d<=31)
{
printf("YES");
}
else if(m==4,6,9,11 and d<=30)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}

m==4,6,9,11这个是错误的写法

#include<stdio.h>
int main()
{
    int m,d;
    scanf("%d %d",&m,&d);
    if(m==2 && d<=28)
    {
        printf("YES");
    }
    else if((m==1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d<=31)
    {
        printf("YES");
    }
    else if((m==4 || m == 6 || m == 9 || m == 11) && d<=30)
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return 0;
}