
In cell G2:
=TEXTSPLIT(TEXTJOIN("",, REPT(A2:A5 & ",", BYROW(B2:E5, LAMBDA(a, COUNTIF(a, "Y"))))),, ",", TRUE)
In cell H2:
=TEXTSPLIT(ARRAYTOTEXT(BYROW(B2:E5, LAMBDA(a, ARRAYTOTEXT(INDEX(B1:E1, TOCOL(SEQUENCE(, COLUMNS(a)) / (a = "Y"), 3)))))),, ", ")
In cell I2:
=TEXTSPLIT(REPT("Y,", COUNTIF(B2:E5, "Y")),, ",", TRUE)
Or you can use this single formula:
=LET(d, B2:E5, HSTACK(TEXTSPLIT(TEXTJOIN("",, REPT(A2:A5 & ",", BYROW(d, LAMBDA(a, COUNTIF(a, "Y"))))),, ",", TRUE), TEXTSPLIT(ARRAYTOTEXT(BYROW(d, LAMBDA(a, ARRAYTOTEXT(INDEX(B1:E1, TOCOL(SEQUENCE(, COLUMNS(a)) / (a = "Y"), 3)))))),, ", "), TEXTSPLIT(REPT("Y,", COUNTIF(d, "Y")),, ",", TRUE)))
Arrange the range in formula as per you need.
Hope this helps.