32 lines
866 B
Python
32 lines
866 B
Python
class ConstructString:
|
|
def __init__(self, n, k):
|
|
self.n = n
|
|
self.k = k
|
|
|
|
def solve(self) -> tuple[str]:
|
|
if self.k == 0:
|
|
if self.n <= 2:
|
|
return ("No",)
|
|
else:
|
|
return "Yes", "abc" * self.n // 3 + "abc"[: self.n % 3]
|
|
elif self.k == self.n - 1:
|
|
return "Yes", "a" * self.n
|
|
|
|
s = [-1] * self.n
|
|
for i in range(self.k):
|
|
s[i] = 0
|
|
s[self.n - i - 1] = 0
|
|
|
|
if self.n - self.k - 1 >= self.k and s[self.n - self.k - 1] == -1:
|
|
s[self.n - self.k - 1] = 1
|
|
|
|
for i in range(self.n):
|
|
if s[i] == -1:
|
|
s[i] = 2
|
|
|
|
return "Yes", s
|
|
if __name__ == "__main__":
|
|
n, k = map(int, input().split())
|
|
solver = ConstructString(n, k)
|
|
print(*solver.solve(), sep="\n")
|