#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %BEGIN
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %STRING(40) S,T,U
_imp_string40 S;
_imp_string40 T;
_imp_string40 U;
// 3 S=""
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/40);
/* clang-format on */
// 4 S=S."CONCATENATION "
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("CONCATENATION ")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/40);
/* clang-format on */
// 5 T="SEEMS TO "
/* clang-format off */
_imp_strncpy(/*?*/&T, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal("SEEMS TO "); (void *)&tmp;}), /*max:*/40);
/* clang-format on */
// 6 S=S.T."WORK OK"
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&S, (_imp_string *)/*?*/&T); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("WORK OK")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/40);
/* clang-format on */
// 7 S=S."!"
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("!")); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/40);
/* clang-format on */
// 8 PRINTSTRING(S)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string40) tmp = S/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 9 %ENDOFPROGRAM
_imp_stop(0);
return 0;
end_0:;
}