先 考 虑 如 果 s , t 之 一 是 a a , b b , c c 的 形 式 先考虑如果s,t之一是aa,bb,cc的形式 先考虑如果s,t之一是aa,bb,cc的形式

那 么 重 复 a b c a b c a b c a b c ( 只 包 含 a b , b c , c a ) 那么重复abcabcabcabc(只包含ab,bc,ca) 那么重复abcabcabcabc(只包含ab,bc,ca)

或 重 复 a c b a c b a c b a c b ( 只 包 含 a c , c b , b a ) 一 定 有 一 种 满 足 条 件 或重复acbacbacbacb(只包含ac,cb,ba)一定有一种满足条件 或重复acbacbacbacb(只包含ac,cb,ba)一定有一种满足条件

如 果 s , t 都 不 是 重 复 的 字 母 如果s,t都不是重复的字母 如果s,t都不是重复的字母

那 么 有 6 种 构 造 , 分 别 是 a b c 的 6 种 全 排 列 那么有6种构造,分别是abc的6种全排列 那么有6种构造,分别是abc的6种全排列

n 个 a , n 个 b , n 个 c , a a a b b b c c c n个a,n个b,n个c,aaabbbccc n个a,n个b,n个c,aaabbbccc

n 个 a , n 个 c , n 个 b , a a a c c c b b b n个a,n个c,n个b,aaacccbbb n个a,n个c,n个b,aaacccbbb

b b b a a a c c c bbbaaaccc bbbaaaccc

b b b c c c a a a bbbcccaaa bbbcccaaa

c c c a a a b b b cccaaabbb cccaaabbb

c c c b b b a a a cccbbbaaa cccbbbaaa

#include <bits/stdc++.h>
using namespace std;
bool isok(string s,string q,string w)
{
if( s==q||s==w ) return false;
return true;
}
int n;
string s,t,ab="ab",ac="ac",ba="ba",bc="bc",ca="ca",cb="cb";
void print(string s)
{
for(int i=1;i<=n;i++) cout << s[0];
for(int i=1;i<=n;i++) cout << s[1];
for(int i=1;i<=n;i++) cout << s[2];
exit(0);
}
int main()
{
cin >> n >> s >> t;
cout << "YES" << endl;
if( s=="aa"||s=="bb"||s=="cc" )
{
if( t!=ab&&t!=bc&&t!=ca ) for(int i=1;i<=n;i++) cout << "abc";
else for(int i=1;i<=n;i++) cout << "acb";
return 0;
}
if( t=="aa"||t=="bb"||t=="cc" )
{
if( s!=ab&&s!=bc&&s!=ca ) for(int i=1;i<=n;i++) cout << "abc";
else for(int i=1;i<=n;i++) cout << "acb";
return 0;
}
if( isok(s,ab,bc)&&isok(t,ab,bc) ) print("abc");
if( isok(s,ac,cb)&&isok(t,ac,cb) ) print("acb");
if( isok(s,ba,ac)&&isok(t,ba,ac) ) print("bac");
if( isok(s,bc,ca)&&isok(t,bc,ca) ) print("bca");
if( isok(s,ca,ab)&&isok(t,ca,ab) ) print("cab");
if( isok(s,cb,ba)&&isok(t,cb,ba) ) print("cba");
}