所有合法串 以M开始 I+3U 模6 == 4 或 2 MI 例外
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define REP(i,a,b) for(int i=(a); i<(b); i++)
char s[101000];
bool judge(int x) {
if(x % 6 == 2 || x % 6 == 4||x==1) return 1;
return 0;
}
int gao() {
int len = strlen(s);
if(len < 2) return 0;
if(s[0] != 'M') return 0;
int I,U;
I = U = 0;
REP(i,1,len) {
if(s[i] == 'I') I++;
else if(s[i] == 'U') U++;
else return 0;
}
return judge(I+3*U);
}
int main() {
int n;
scanf("%d", &n);
while(n--) {
scanf("%s", s);
if(gao()) printf("Yes\n");
else printf("No\n");
}
return 0;
}