# Dad jokes are fun

We all know the classic dad joke that goes something like this:

1. Somebody says a sentence to describe their self (e.g. I'm tired or I'm confused).

2. A dad-joke enthusiast comes along and replies Hi <adjective>, I'm Dad!, because introductions follow the same format (I'm Peter follows the same format as I'm hungry).

Your job is to take in an input in the form of a self-descriptor, and output the appropriate dad-joke form, but instead of using the word "Dad", you'll use the name of the programming language you're programming in.

Test cases (assume that they are being parsed by Python):

I'm amazing                  Hi amazing, I'm Python!
I'm tired                    Hi tired, I'm Python!
I'm hungry                   Hi hungry, I'm Python!
I'm fat                      Hi fat, I'm Python!


Now assume that these test cases are being parsed by Golfscript:

I'm a programmer             Hi a programmer, I'm Golfscript!
I'm a question-writer        Hi a question-writer, I'm Golfscript!
I'm a Stack-Overflow-er      Hi a Stack-Overflow-er, I'm Golfscript!


The exact challenge:

1. Take in a string in the self-descriptor format (I'm <adjective> or I'm a(n) <noun>) using standard input or through a function.
• Assume there is no ending punctuation.

• Assume the word I'm is used and not I am.

1. Convert it to a dad-joke format - see the above examples for exactly how that should look.

Other stuff:

• One of the ways I considered telling my family that my wife was expecting was by telling as many dad jokes as possible and seeing who caught on! May 21, 2019 at 0:54
• Some example outputs end with exclamation and some do not. What is the significance? May 21, 2019 at 1:56
• Usual practice is to give it much longer before accepting an answer, if you do so at all: codegolf.meta.stackexchange.com/q/2035/66252 May 21, 2019 at 10:58
• And the tie-breaker isn't votes, it's who reached the lowest score first. May 21, 2019 at 12:08
• Now waiting for the next golfing language that's name is an empty string. May 21, 2019 at 18:24

# V, 13 bytes

cEHi<esc>A, <C-r>" V!

Try it online!

Inspired by tsh's answer

This takes advantage of the fact that I'm is yanked from the start of the string when deleting the text from the start, and pastes it to the end with <C-r>" while in insert mode.

• I just edited I'm to <C-O>p and then notice your answer...
– tsh
May 21, 2019 at 10:11
• A golfing language using Vim and escape takes 5 characters??? May 21, 2019 at 18:13
• @mowwwalker Nope. It's really the byte 0x1B, but it's easier and more obvious what it means if you write it as <esc>. The same for <C-r>, which is really 0x12 May 21, 2019 at 21:19
• @DJMcMayhem, ah that makes much more sense May 21, 2019 at 21:22

# C (gcc), 5942 33 bytes

-17 bytes thanks to @Conor O'Brien noticing that the import wasn't necessary

-9 bytes thanks to @tsh pointing out a shorter, UB way of writing the function

a(x){printf("Hi%s, I'm C!",x+3);}


Try it online!

Chops off the first 3 characters of the input (removes I'm) and surrounds it with the desired text.

• The program compiles without the import, so you can drop it for 42 bytes. May 21, 2019 at 2:39
• @ConorO'Brien nice catch! May 21, 2019 at 3:28
• And the int  is also optional.
– tsh
May 21, 2019 at 4:08
• (?) And also the char*, maybe...; so a(x){printf("Hi%s, I'm C!",x+3);} should work
– tsh
May 21, 2019 at 4:13
• @tsh: yes, in practice that will work on most 32-bit C implementations (where an int can hold a char* without truncating it), despite the undefined behaviour. On x86-64 gcc on Linux, it will always fail in a PIE executable (typically no pointers are in the low 32 bits of virtual address space, and gcc won't happen to copy the high 32 bits while calculating x+3 from the function arg in the RDI register). But in a non-PIE executable, static addresses are in the low 31 bits of virtual address space, so if the caller passed a string literal or a static buffer, it would happen to work. May 21, 2019 at 9:54

# V, 13 bytes

cEHi<Esc>A, <C-O>p V!


Try it online!

New to V. Just knew it about 30 minutes ago. Anyway, this language is chosen just because its name only cost 1 byte. I'm not sure how to send <End> key in V. Most vim environment would accept <End> as a replacement of <Esc>A in this example. But, you know, V is 2 characters shorter than vim. :)

Thanks to @Candy Gumdrop, saves 1 byte.

• Could save one byte by changing c3l to cE. May 21, 2019 at 9:39
• @CandyGumdrop Wow, I didn't know the upper case E before.
– tsh
May 21, 2019 at 9:52
• You could also do cW (which seems different, but is actually identical to cE) or 3s. Nice job! I was just about to post almost this exact answer when I saw that there were 2 V answers already, which was a nice surprise. I've tried several different approaches, but I'm not sure if it'll be possible to get <13 bytes. May 21, 2019 at 17:21

# Excel, 36 33 bytes

-3 bytes thanks to Johan du Toit.

Input goes into A1.

="Hi "&MID(A1,4,99)&", I'm Excel"


First attempt:

=REPLACE(A1,1,3,"Hi")&", I'm Excel!"

• ="Hi "&MID(B13,4,99)&", I'm Excel" 34 bytes
– jdt
May 25, 2019 at 11:24
• Thank you @JohanduToit. A1 instead of B13 so actually 33 bytes. Jun 13, 2019 at 14:03

# brainfuck, 164

,-.+>,>,----.++++>,.>,[.,]<<<+++++.----->>.[<]>[.>]<[->+++<]>++.[--->+<]>----.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>-.


Try it online!

The "brainfuck!" part of the string is generated with this tool, can probably be golfed further by hand.

• Try BF Crunch
– Jo King
May 21, 2019 at 2:58

# Stax, 13 bytes

â∞¿φ‼0▲(─ƒSqÄ


Run and debug it

Unpacked, ungolfed, and commented, it looks like this.

.Hip        print "Hi" with no newline
3tp         trim 3 characters from start of input and print with no newline
final line is to print the unterminated compressed literal ", I'm stax!"
dYgAwg_


I moved the final comment up one line since nothing may follow an unterminated string literal.

Run this one

• I'm going to declare you the winner because your post had more votes, but you technically were tied with one other person. Congratulations! May 21, 2019 at 10:02

# Python 3, 35 34 bytes

lambda s:"Hi%s, I'm Python!"%s[3:]


Try it online!

-1 byte thanks to Embodiment of Ignorance

Also 34 bytes, using the newer formatted strings, thanks to Gábor Fekete:

lambda s:f"Hi{s[3:]}, I'm Python!"


Try it online!

• 34 bytes May 21, 2019 at 2:00
• What about losing lambda s: and replacing %s[3:] with %input()[3:]? (-4 bytes)
– niko
May 21, 2019 at 21:01
• @niko if I understand what you are saying, that will not print anything. Default rules on this site are either a full program that prints output or a function that returns output. Usually what you are suggesting is called a snippet, and would not be a complete solution, it would need to be wrapped with print() for 7 more bytes, which is why Python answers usually use lambdas. May 21, 2019 at 21:07
• @niko It's OK! With lambda s, I have defined an (anonymous) function. If you look at the header and the footer in the TIO link, I name that function f, and then called it with f("I'm whatever"). Then the function returns the expected output. With your snippet, you neither print nor return from a function - you just have a bit of code that evaluates to the correct result, but does not do anything with it. You can run programs multiple times, you can call functions multiple times, but a snippet is just a snippet. May 21, 2019 at 21:34
• alternative, but still 34-byte solution: lambda s:f"Hi{s[3:]}, I'm Python!" May 22, 2019 at 9:04

# x86, 37 36 bytes

00000000: d1ee ac8a d8c6 0024 adc7 0448 698b d6b4  .......$...Hi... 00000010: 09cd 21ba 1901 cd21 c32c 2049 276d 2078 ..!....!., I'm x 00000020: 3836 2124 86!$


Unassembled:

D1 EE       SHR  SI, 1                  ; point SI to DOS PSP (80H)
AC          LODSB                       ; load string length into AL, advance SI
8A D8       MOV  BL, AL                 ; put string length into BL
C6 40 24    MOV  BYTE PTR[BX][SI], '$' ; add string terminator to end of string AD LODSW ; advance SI two chars C7 04 6948 MOV WORD PTR[SI], 'iH' ; replace second and third char with 'Hi' 8B D6 MOV DX, SI ; load offset for INT 21H string function B4 09 MOV AH, 9 ; display a '$'-terminated string function
CD 21       INT  21H                    ; call DOS API
BA 0119     MOV  DX, OFFSET S           ; load offset for second part of string
CD 21       INT  21H                    ; call DOS API
C3          RET                         ; return to DOS
S  DB ", I'm x86!$"  A standalone executable DOS program. Input from command line, output to screen. * The exact "language" name here is a little ambiguous as CPU machine code isn't really a language in a formal sense. Going with "x86" as a generally understood and accepted name for the target platform. • [moving comment down from main thread] I'd say "x86" is the architecture, while "MA SM" would be one of the available languages on that architecture (note it does have a space in it though). May 22, 2019 at 18:34 • I think "x86" is probably fine really, it is golf after all :) May 22, 2019 at 18:51 # R 4544 39 bytes @Giuseppe Edit sub("I'm(.*)","Hi\\1, I'm R",scan(,""))  @AaronHayman Edit function(s)sub("I'm (.*)","Hi \\1, I'm R",s)  Try it online! • can save one byte replacing "(I'm ) with "(.* ) May 21, 2019 at 9:32 • @AaronHayman, doesn't work for I'm a programmer (many spaces) because of greediness May 21, 2019 at 9:48 • @NahuelFouilleul Right, I wasn't sure if the first or last white space would be considere. – niko May 21, 2019 at 9:54 • Okay, I saved a byte, and I think this one works properly Try it online! May 21, 2019 at 10:22 • 2 bytes by changing the sub to "I'm(.*)" and "Hi\\1, I'm R" and 3 bytes by taking input from stdin using scan: Try it online May 21, 2019 at 14:14 # Ruby-p, 3227 26 bytes -5 bytes by leveraging Nick Kennedy's Jelly answer. -1 byte from splitting on a different point in the string. Also realized my old bytecount was wrong. ~/m/;$_="Hi#$', I'm Ruby!"  ### Explanation  # -p gets line of input and saves to$_
~/m/;                       # Find first 'm' in $_ using regex$_="Hi#$', I'm Ruby!" # Save modified string to$_
# ($' is the string AFTER the most recent regex match) # -p outputs$_ to screen


Try it online!

• Cool! Where's your input? May 20, 2019 at 23:37
• @connectyourcharger added an explanation. Input is STDIN. May 20, 2019 at 23:40
• Gotcha. Good answer! May 20, 2019 at 23:42

# Java, 36 bytes

s->"Hi"+s.substring(3)+", I'm Java!"


Try it online.

# Whitespace, 267 bytes

[S S S T    S S T   S S S N
_Push_72_H][T   N
S S _Print_as_character][S S S T    T   S T S S T   N
_Push_105_i][T  N
S S _Print_as_character][S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][N
S S N
_Create_Label_INPUT_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S N
S _Duplicate_input][S S S T S T S N
_Push_10][T S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_TRAILING][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_INPUT_LOOP][N
S S S N
_Create_Label_TRAILING][S N
N
_Discard_top][S S T T   S S S T S T N
_Push_-69_!][S S T  T   N
_Push_-1_e][S S T   T   T   N
_Push_-3_c][S S T   T   S T N
_Push_-5_a][S S S T S T S N
_Push_10_p][S S S T T   S T N
_Push_13_s][S S T   T   N
_Push_-1_e][S S S T T   T   S N
_Push_14_t][S S S T T   N
_Push_3_i][S S S T  S N
_Push_2_h][S S T    T   T   T   T   N
_Push_-15_W][S S T  T   S S S T T   S N
_Push_-70_space][S S S T    T   T   N
_Push_7_m][S S T    T   T   T   T   T   T   N
_Push_-63_'][S S T  T   T   T   S T N
_Push_-29_I][S T    S S T   T   N
_Copy_0-based_3rd_-70_space][S S T  T   T   T   S T S N
_Push_-58_,][N
S S T   N
_Create_Label_PRINT_TRAILING_LOOP][S S S T  T   S S T   T   S N
_Push_102][T    S S S _Add][T   N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_PRINT_TRAILING_LOOP]


Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.

Since Whitespace inputs one character at a time, the input should contain a trailing newline so it knows when to stop reading characters and the input is done.

Try it online (with raw spaces, tabs, and new-lines only).

Explanation in pseudo-code:

Print "Hi"
Read three characters from STDIN, and do nothing with them
Start INPUT_LOOP:
Character c = STDIN as character
If(c == '\n'):
Call function PRINT_TRAILING
Print c as character
Go to next iteration of INPUT_LOOP

function PRINT_TRAILING:
Discard the top of the stack (the c='\n' that was still on the stack)
Push "!ecapsetihW m'I ," one character at a time
Start PRINT_TRAILING_LOOP:
Print as character
Go to next iteration of PRINT_TRAILING_LOOP


The characters of ", I'm Whitespace!" are pushed in reversed order, and then printed in a loop. All values of these characters are also lowered by 102, which are added in the loop before printing to save bytes. This constant 102 to lower each character with is generated with this Java program. Also, instead of pushing the value -70 for both spaces twice, the second space in "!ecapsetihW m'I ," is copied from the first with the Copy builtin to save a few bytes.

# PHP, 34 32 bytes

Hi<?=substr($argn,3)?>, I'm PHP!  Try it online! Input via STDIN, call with -F. $ echo I'm a Stack-Overflow-er|php -F dad.php
Hi a Stack-Overflow-er, I'm PHP!

$echo I'm hungry|php -F dad.php Hi hungry, I'm PHP!  # IBM/Lotus Notes Formula Language, 61 62 bytes +1 because I hadn't noticed the ! at the end of the output. "Hi"+@Right(i;"I'm")+", I'm IBM/Lotus Notes Formula Language!"  Computed field formula that takes it's input from an editable field i. It would fail for "I'm an I'm" but since that wouldn't make any sense at all I'm assuming that it won't happen. Shame that at 32 bytes, the name of the language is more than half the total length of the formula! Screenshot below showing an example input and output: • It looks like your language would be good for the job if the name wasn't so long :) May 21, 2019 at 9:59 • if I was being serious I would probably just call it Formula which is how it is referred to in the Notes/Domino developer community :-) May 21, 2019 at 10:10 • @PeterCordes - Possible but Lotus Notes/Domino also has LotusScript as an inbuilt language so we probably need to be a little more specific ;-) May 21, 2019 at 10:12 • Could actually go a little better than that since IBM rebranded it to IBM Notes but then they rebranded again to IBM Domino so I guess that to be strictly correct it should be "Hi @PeterCordes, I'm IBM Domino Formula" :) May 21, 2019 at 10:16 • @PeterCordes Only the essential parts of the language name are required - I'm accepting Perl as a substitution for Perl 5 or Perl 5 -p. May 21, 2019 at 10:23 # sed (-r), 3128 25 bytes -3 bytes thanks to Shaggy -3 bytes because -r not needed in output s/I'm(.*)/Hi\1, I'm sed!/  TIO • May 21, 2019 at 12:25 • Hmm ... Our way around counting flags was to declare them as different languages so I think you may need the -r but it would be worth getting Meta to weigh in on it. May 21, 2019 at 17:40 • i removed because of perl 5 answer and comments May 22, 2019 at 5:34 # Perl 5-p, 31 24 bytes Cut down based on clarifications from OP and a suggestion from @NahuelFouilleul. / /;$_="Hi $',$ Perl!"


Try it online!

• 29 bytes May 21, 2019 at 7:14
• also maybe $^X$] special variables could be used, however 5 is shorter than $] May 21, 2019 at 7:18 • Do you need to include the 5 as part of the name of the language? i.e. could you argue that Perl 5 "thinks of itself" as "Perl"? That was the case before Perl 6 existed, and codegolf answers only need to work on at least one implementation of the language, so pick an old one? May 21, 2019 at 9:58 • OP confirms that Perl is sufficient. And that the use of the -p option doesn't have to be considered part of the language name. May 21, 2019 at 10:24 # Japt, 18 bytes Hi{s3}, I'm Japt!  When Japt's string compression library achieves a 0% compress rate... Try it Another 18-byte alternative: Hi{Å¤}, {¯4}Japt!  • ... but still beats Jelly and 05AB1E :) May 21, 2019 at 8:25 # Octave, 35 bytes @(s)["Hi" s(4:end) ", I'm Octave!"]  Try it online! @(s) % Anonymous function taking a string input [ ] % Concatenate everything inside the brackets "Hi" ", I'm Octave!"] % The fixed parts of the output string s(4:end) % The input, except "I'm" % Returns the concatenated string  ### 42 bytes: I tried retrieving "Octave" somehow, without writing it out, since 6 chars is quite a lot compared to some of the other language names here. Unfortunately, I could only find ver, which outputs a struct with comma separated fields. Takes way more than 6 bytes. :( @(s)["Hi" s(4:end) ", I'm " {ver.Name}{1}]  Try it online! ### TeX, 4843 30 bytes Yes I could save a byte by writing TeX instead of \TeX, but it seems a shame. \def\s[#1]#2#3#4{}\def~[#1]{Hi\s[]#1, I'm \TeX!}  Update: saved 3 5 bytes thanks to fixed pattern matching. \def\s[]I'm{}\def~[#1]{Hi\s[]#1, I'm \TeX!}  Update: -13 bytes (thanks, Jairo A. del Rio). \def~I'm #1~{Hi #1, I'm \TeX!}  Test file \def~I'm #1~{Hi #1, I'm \TeX!} ~I'm amazing~ ~I'm hungry~ ~I'm tired~ ~I'm fat~ ~I'm a programmer~ ~I'm a question-writer~ ~I'm a Stack-Overflow-er~ \bye  Output: Try it online! • -12 bytes Mar 19, 2021 at 17:51 • Thanks for this! Unfortunately, it does not work for all the test cases, which can be either one or two words. Mar 19, 2021 at 18:23 • In such a case, -7 bytes (and yes, it includes an end-of-line dirty trick). You could make it -8, but it will consume the space after the command and it result in ugly spacing. -9 with TeX instead of \TEX Mar 19, 2021 at 18:33 • How about -12 bytes? The question says 'using standard input or through a function', so it's difficult to know what counts. Mar 21, 2021 at 16:49 • Wow, that's much better Mar 21, 2021 at 16:54 # JavaScript, 38 37 bytes x=>Hi${x.slice(3)}, I'm JavaScript!


Try it online!

# Rust, 41 bytes

|x:&str|print!("Hi{}, I'm Rust!",&x[3..])


Try it online!

## Batch, 22 + 3 = 25 bytes

@echo Hi %*, %0 Batch!


+3 bytes for naming this file I'm (with the required .bat extension for Batch files). Invoke as I'm hungry, when it will echo Hi hungry, I'm Batch!.

• program should receive I'm but here it's the name of the script don't know if it's valid, or unless it's the interpreter with the script in current path May 21, 2019 at 9:43
• @NahuelFouilleul The interpreter is CMD, so would that actually save me 2 bytes?
– Neil
May 21, 2019 at 10:03

# Perl 6, 30 28 27 bytes

{S/.../Hi/~", I'm Perl 6!"}


Try it online!

# Jelly,  16  15 bytes

Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ»


A full program accepting a (Python formatted) string argument which prints the result.

Try it online!

### How?

Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ» - Link: list of characters    e.g. "I'm a programmer"
Ḋ               - dequeue                          "'m a programmer"
⁾Hi           - pair of characters               "Hi"
a              - logical AND (vectorises)         "Hi a programmer"
“'ṫṗḶ/÷!Ṗ» - list of characters               ", I'm Jelly!"
-  - since this is a new leading constant chain the previous result
-    is implicitly printed (with no trailing newline)
- program result is implicitly printed (again with no trailing newline)


Note: Ḋ⁾Hio... works too.

# Jelly, 20 17 bytes

ṫ4;“'ṫṗḶ/÷!Ṗ»⁾Hi;


Try it online!

A monadic link taking the input as its argument and returning a Jelly string.

### Explanation

ṫ4                | everything from 4th character on
;“'ṫṗḶ/÷!Ṗ»     | concatenate ", I’m Jelly!" to the end
⁾Hi; | concatenate "Hi" to the beginning

• Hang on, Jelly has a built-in just for the word "Jelly"? May 20, 2019 at 23:55
• @connectyourcharger it’s a compressed dictionary word May 20, 2019 at 23:56
• Ah, that makes sense May 20, 2019 at 23:56

## VBA (Excel), 27 28 bytes

?"Hi"Mid([A1],4)", I'm VBA!


Input goes in cell A1 of the Active Sheet in Excel, run code in the Immediate Window

Takes advantage of the fact that "SomeString"SomeValue and SomeValue"SomeString" will implicitly concatenate, and that omitting the third argument from the MID function will take all characters from the end of the input - turning it into a "dump initial characters" function

(-1 byte thanks to Shaggy, but +1 when OP confirmed that all answers should end with an exclamation mark)
(-1 byte thanks to Taylor Scott reminding me that the final double-quote was optional)

• Could you remove the space after Hi and replace 5 with 4? May 21, 2019 at 12:24
• @Shaggy ... Yes, yes I could. No idea how I missed that, thank you May 21, 2019 at 12:27
• You can drop a byte by removing the very last " from this solution, and as you use evaluate notation (the square brackets) you should mark this solution as being Excel VBA, as that notation is only available in Excel Jun 6, 2019 at 12:18

# Malbolge, 24477 bytes

Mors sum, Dominus Pestifer Mundi

Hi, Dominus Pestifer Mundi, I'm dad!

bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEaYAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcbaB^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchgedGba_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbEBXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbEBXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}{z]rwvutWrkpohmPkjihafI^cba_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b|_]y\ZvYWsVTpSQmlkNiLgf_dcbaC^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPNdchKIeHFbaD_AWV[><X;9U86R53ON1L.DCH+)EDC&;@#>=<;|98x6wu32s0p(',mk)(i&f|{"ca}^z][wZXtWUqTRnmPNjcbJJ_dcbEDYB@@?ZSX;VUTS6QPO11F..CHGF)(C<A$?>=<}:98xx/uu,10/po,+$kiih%$#z!b}|{z]xwvXXmUUjonmPOjihafIdcbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>=~|438yw5vt21r/o'&+lj(ig%fd"ca}^z][wZXtWUqpoRQlkjihafIdcbaD_^]??T<<QVUT76QPONMLE.,,+FEDCBA@9>!<;:9zx0/uu,10/po,+*)('&}$e"!~}{zy[[pXXmrqpSRmlkjihgf_Hcba_AW\[ZY;Q:OTSRKPIN1//.CH+FEDC&A@?>=~|:327xv43tr0)(-nl*ki'hf$ec!b|_]y\ZvYWsVTponQPejMhgfeHcbaCCX@@UZYX;:UN7554ONGL/JIHG*ED&BA$?!76;|zyy054us1*).om+lj(ig%fd"ca}^z][wZXWWlqpoRQlkdiLgfedGbaBBW??TYXW:9TSRK4221LKJIBG*EDCB%@?>~~5{{2765vu210/(-n+*)(i&%$ddyaav{zy\[vutsrkTRRQlkjihgeHcbaC^]\>>S;;PUTS65PONMLKDI,GFED'%;:?"~<}{9zx6wu3tr0qo-nl*ki'hfeez!~}_zyxwvutmVTTSnmlkjihgeHcbaC^]?>>SXW:8TMLQPO21LKJIHGFE>C&A@?>=}5:987w/v-210).',m*)('h%$#ccxuzyx[ZoXVVUpinQlkjiLgfeGG\DDY^]\?>YRW:UTSR5PON00E--BGFE('BA:#!!~;:927x5432s0/.nn%kk"'&%fe"!~w|_zyxwZutsUUjRRglkjMLgfed]FDDC^]\[ZSX;VUTS6QPO11FKJ-H*@?D'%A$">!}||387xv4-,1rp.om+lj(ig%fd"ca}^zyx[ZutsrqjoRmlkjMhgfHH]EEZ_^]@?ZYXWVUN7554ONMLKJIBG*EDCB%@?>~~5{{2765vu210/.-,%*k('&%f#"b~a_{^\x[YutWUqjinQOkNLhKIeHFbEC_B@\?=<<QVUT76QPONMLKJC,GFEDC%;@?>=}5|381654-2sqqp',m*)('h%$#ccxuzyx[ZotWrqpoRmlkMMbJJ_dcbED_XA??>YXQV9TSRQ4ON0L/-IH+F(>=B%#?>!<|438yw5vt2sq/pn,mk)jh&%fd"yxuzyx[ZutmrUponmPkjiKKHH]baCB]\[T=;;:UTSRKP3NMLK.IHG))>&&;@?>!~;:9816w4321r/.-mm$jj!&%$ed!~}|{t][[ZutsrqpinQlkjiLgfeGG\DDY^]\?>YXWVUTMR5PONM0KJI++@((=BA@#"=<;:9870wuut10/.-,+*#(i&%$#d!~}__t\\qvutWVqponmlkjchKfedcbDZ_^]\>T=RWVUNSLQ4ONML/-CBG*(D'%A$">=~|:327xv43tr0)(-nl*ki'hf$ec!b|_]\\qvutWVkTRRQlejMhgfeHcbD_B]?UTY<:99NSR5P2HGL/-IH+F(>=B%#""7<;|9y105vt2sq/pn,mk)jh&%$ed!x}{z]xwYuXVrUSoRPlkNLhaeHFbEC_B@??TYX;V8NMR53ON1L.DCH+)ED'B$:9>!};|z876wv32+r/.-n+*j(ig%$ec!xw|_]yx[YunmrUSonQOkdchKIeHFbEC_B@\?=Y<:99NSRQ43NMLKD-++*EDCBA:?"=<;|z21ww.321rq.-,+*#(i&%$e"!~uzy\ZvonsrqTSnmlkjibKIIHcba_^]V[>YXW:UTS55JON1L.DCH+)E(&BA$?!76;|z8ywvv-21r/o'&+lj(ig%fd"ca}^z][ZZotsrUTonmlkjibgJedcFa_^]@>ZSRW:877LQP31MFEJ-+GF)'C<;@#!=~|:{y76wu3,+0qo-nl*ki'hf$ecbbw|{z]\wvutsrqpiRmlkjiKafedcE[DY^]\UZSX;998MR5PON1LK-,,AFE(C%;:?"~<;|9y105vt2sq/pn,+l)i!~%fd"ca}^z][wZXtsrUTinQlkNihgII^FF[_^A@[T=XWV9TSR44INM0K-CBG*(D'%$$9>=~|:327xv4usrr).-nl*#"'hfec!b|_]y\ZvYWsrqTSnmleNLLKfedc\aD_^]@[ZYXW:8TMLQ42NM0K-CBG*(DC&A#98=~|:9z7w/.3tr0/p-m%)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedGbaC_^A\>TSX;9UT75QJIN1/KJ-+G@?D'%A@#!=65:{y7xv4us1rp.om+lj('&gf#"!~}v_]]\wvutsrkpSnmlOjihJJ_dcFaCYX]@>Z=;WV9T6LKP31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&%#"!x}{zy\ZpotWUTTinmPNjcbgJHdGEaDB^A?>>SXW:8TMLQ42N1/K.,H+)E(&%%:?>=~}:987654-trrq.-,+*)('~%f#"!b}|{]]rwvYWslkpSQPPejiLgI_^cFDCA]@>Z=;::OTS6Q3IHM0.J-+G*(D'%A">=<}|98765432+0q.-,+*j"'&%dzcx}|uzyrwZutsrUponPPeMMbgfeHGbaZCAA@[ZYRW:UTSR5PONML/-IBAF)'C&##8=<}{9216wu3tr0qo-nl*ki'hfec!b__tyxwZYtsrkpSnmlkNihgII^cbEBXW\?=Y<:VU8S5KJO20L/-I,*F)'C&@#!=~|:9z7w/.321rq.-,+kiih%#"!x}{zyx[vuWsVTSShmlOMibafIGFF[_B@\UTY<:VU8S5KJO20L/-I,*F)'C&@#!~~5:98yx54321*/p-,+*k('&ff{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QPON1LK-I,*FE(C%;:?"~}}498y6v.-2sq/pn,mk)jh&ge#db~a_^^sxwvYXmrUponmPkjLhKIHH]baDB^WV[><X;9U86R53O20L/-I,*FED'&A:#!!~;:38y65vt,+qq(-,+lk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<<QVU86RKJO20LKJ-,GFE>'%%?>=<5:{87x54t21r/o'&+lj('h%e{z!b|{^\xqpuXVrUSoRPlOMiLJfIGcFDCCX]\[>=XWVUNS6443NMLKJC,GFE(CB@#!=~|{{276w4t,+0qo-nl*)j'g}|#db~a_{^\xwZuWmlqpoRQlkjihaJHHGba_^]V[>YXW:UTSRQ42NGFK.,HG*E'=<A">!};:{y70/4us10qo-&%*ki'hfec!b|_]y\ZvutWVqponmlejMhgJedcEEZ_^A\>TSX;9UT7R4JIN1/KJ-H*@?D'%$$9>=~;{327xv4us1rp.om+lj(ig%fd"!~a{zyxwvunWUUTonmlkjihafIdcbE_A]\?=YRQV9766KPO2M/EDI,*F)'C&$@#!=~|:{y7xv4usrr).-,ml)('&%$#"y~a|{zyxZputsrTjShmlkdibgJedcbE_^@@U==RWVU87L5332MFK.IHGF)DC%A$">=~;{327xv4us10q.n&%*ki'hf$ec!b|_]y\ZvutWVqjoRmlkjMhgIHH]baDB^WV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<}{987xw43,sqqp-,+$)j'&%f#"!aav{z]xZpotWUqTRnmPkMcbgJHdGEaDB^A?[><X;9U86R5322GLKJ-,GFE>C&A@#>=<;:{y70/4us10qo-&%*ki'hf$ec!~a|^tsx[YuXVUUjonQOkdchgfIHcbaYB]\[>YX:99NSR5P2HGL/-IH+)E>=B%#?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{t][[ZutsrqpohmPkjiLgfHdGEaC^@VUZ=;WV9T6LKP31ML/J,BAF)'C&$@#!=~|:{y7xvuu,10/po,+*)('&}$e"!~a|{zyx[YunmrUSoRPlkNLhaeHFbaDB^WV[><XW:8TMLQ42N1/K.,H+)E(&B%#?>=~}:9876543,s0/.-,l$)('&f|ez!~w|{ty\ZZYnsVqpoRmlkMMbgfIdF\[CA]@>ZY<W9ONS64P3100EJI,G)?>C&$@#!=~|:{y7xv4usrr).-,ml#(i&%$e"!a}^z][wZXtWUqpSQmfejMKgJHdGEaDB^A?>>SXWV98SL5332MLEJ-HGF)DCBA@#!=65:{y7xv4us1rp.om+*k(h~}$ec!b|_]y\ZvYWsrqTSnmfkNLLKfed]Fa_B]\>ZY<:VONS64P31M0.J-+G*(D'%A$">!};|zyy0543ts0/.'nllk('&%|#d!~}{zy[[putWrTjinQONNchgJeG]\aDBAAV[Z=;WPOT75Q42N1/KJ-H*@?D'%A$">!};:{8x0/432sr/.-,%*kiih%$#"!xa|{z]xwvutWUqjinQOkNLKKedGEaZY^A?[Z=X:POT7544INM0K-CBG*(DC&A#98=~|:{y7xv4usrr).-,ml)('&%|eccb}|{zyxqvYtsrUpoQmPNMMbgfIGc\[CA@@UZY<W9ONS64P31M0.--BGF)'C<;@#!=~|:{y7xv4us10/po,+*)('~%fddc~}|{zyxqZutsVqpRnmPkMcbgJHdGEaC^@VUZ=;WV9T6LKP31M0.J-+G*(D'%A$"!!6;:9zy6543210)pnnm*)('&%$#z!b}|{^yxZvuXsUkjoRPlkNiKaeHFbECBBW\[><XQPU86RQ4O1GFK.,H+)E(&B%#""7<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrqTonPlkNiKaeHFbEC_B@\?=Y<:V97S64P31M0.--BGFE('<%##"=6;|987x54t2sq/pn,mk)(ig%|{"ca}|_z\rqvYWsVTSShmlOMibafIGcFDCA]@>Z=;WVU87RKP3NML/JI+GF)D&<;@#!=~|:9z7w/.3tr0qo-nl*ki'hf$ec!b|{z]\wvoXVVUponglOjiLgfHdcFaCYX]@>Z=;WV9T6LKP31M0.J-+G*(D'%A$">!};:9zy654-2s0/p-,+kk"'&g$dzy~}|_^yxwvoXVVUponmlejMhgfIG]\aDB^A?[><XW:U7MLQ42N1/..CHG*E'=<A$">!};|z8yw5vt210qp-,+*)"'h%$#d!~|{^\xqpuXVrUSoRPlkNLhaeHFbaDB^WV[><XW:U7MLQ42N1/K.,H+)E(&BA@#"=<;:981xvvu210/.-,%*k('h%$d"!b}_uty\ZvYWsrUpRhglOMLLafeHcE[Z_B@??TYX;V8NMR53O20LK.I+A@E(&B%#?>!<|43876wv3210/.-&+l)('hf|{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QP3NMLKJ-+G@?D'%A$">=~;{327xvuu,10qo-&%*ki'hf$ec!~a|^tsx[YXXmrqTRngfkNLKKedGEaZY^]\?>SX;998SRKP3NM0.DC++@EDC&%@?8=~;:9z765uu,10qo-&%*)(ih%$#zcaa{zyxqvYtsVTjinQOkjMhJ_dGEaC^@VUZ=;W:8T75Q42N1/KJ-H*@?D'%A$"!!6;:{8x0/4us10/po,+*)"'h%$#dbxw__tyxwZYtsrqpiRPPOjihgfe^cFaC^]\[Z=;WPOT75QP3N0FEJ-+**?DC&$@98=~|:{y7xv4us1rp.-n+k#"'hf$ecbbw|{^\xqpuXVUUjonmPOjihgfe^cFDDC^]\[ZYXWPU8SR53IH00EJIH+*EDCBA@?>7<}:9876v.3210p(o&+$)('~%f#"c~}|^^sxwZXtmlqTRnQONNchgJeG]\aDB^]@[=SRW:877LQP31MFEJ-+G*(D'%A$">!};|zyy0543ts*q.-nl$#ii~%$#dc~}v_]]\wvunsVqpSnmlNNchgJHd]\a_BA\[ZSX;998SRQPOHM0KJ-+A@((=BA@#"=<;:927x54u210pp',+lj(!~%$#dc~}|{zyr[vuXVlkSShmlkNMhgfedcbaZC^]\[Z<RWVUT6L5JONMFKDI,**)>C&A@#!76;|z8yw54u2r*).om+lj(ig%fd"ca}^z][wZXtsrUTinQOONibKfedGE[Z_B@\?=Y<:99NSR5P2HGL/-IH+F(>=B%#?>!<|438yw5vt2sq/pnmm$)('hg${dbba|{ty\wvYtsrqpSQmfeMMbgfeHGbaZ_B]\[>YX:VU86RKJO20L/-I,*FE(&B;:?"~<;|z8105vt21r/o'&+lj(ig%fd"ca}^zyx[ZutslUSSRmlkjchKfedGE[ZBBW\[Z=<WVUTSL5332MLKJIHAF)DCB%@?!=~|:{y7xv4us10qo-&%*ki'&g$dzy~a_{^\x[YuXVrUSonmPOjihgfe^cFaC^]\>>SXW:U7MLQPO21LKJIHGF?(&&%@?>=<;:927x543tr*).om+lj(ig%$e"bxw|_]y\ZvYWsVTpSQmPNjMKgfeHGba_^]\[TY<WVUTS5KPONM/E.CHGF?D=B%@?"=<;:9zx6/.3tr0/pn,%$)jh&ge#db~}{]srwZXtWUqpoRQfOMMLgeHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A$">!}||387xv4-,1rp.-,ml)"'h%$e"!a}|_z\rqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S64P3100EJIH+*ED=&$$#>=<5:{876wu-,1rp.-n+k#"'hfec!~a_{tsx[YuXVrUSoRPlOMiLJfIGFF[_^A@[ZYRW:UTS6QPONM0.JCBG*(DC&A#98=~|:{y7xv4us1rp.om+lj(ig%fd"!~a{zyxqZXXWrqponglOjiLgfeGG\aC^@VUZ=;WV9T6LKP31ML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hf#"cb}|{zyrwZutsVqpRnQOkjMhJ_dGEaC^@VUZ=;W:8T75Q42N1/K.,H+)EDC&%@?>=<;4{yyx543210/(-n+*k('&%ec!xw|_]yx[YunmrUSoRPlOMihKfH^]bEC_B@\[Z=<WVUTSRQJO2ML/-CBG*(D'%A">!};|zyy054u2r*).om+lj(igff{"!b|uty\ZvutWVqponmlkjcLgfedcE[_^]?U>SXWPUTMR5332GL/JI,GF(DC&A#98=~|:9z7w/.3tr0/pn,%)jh&ge#db~a_{^\x[YuXVUUjonmPOdiLJJId]Fa_B]\>ZY<:VONS64P31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&}fddc~}v{^yxwZutVUUjonQlNdchKIHH]baDB^WV[><XW:8TMLQ42NM0.JCBG*(D'%A">!};|z8yw543ts0/(-n+*k('&ff{"!b}_uty\ZvuXsUkjoRPlkNiKaeHFEEZ_^A\>TSX;9U86R53O20L/-I,*F)'CBA#>=<5|zzy6543,1r/.-n+*)ii~%e"bxw|_]yx[vXnmrUSRRglkNiKaeHFbECBBW\[>Y;QPU86R53O20L/-I,*F)'&&;@?>!~;:9816w43t10/.-nl*#"'hf#db~wv{^\x[YuXVrqToQgfkNLhKIedcFE_^]\U><<;VUTSRQJO2ML/-CBG*(D'%A">!};|zyy054u2r*).om+lj(igff{"!b|uty\ZvutWVqponmlejMhgJedFbaD_AWV[><XW:U7MLQ42NM0.JCBG*(D'%A">!};|z8yw5vtss*/.-nm*)('&%{dbba|{zyxwvunsVqpoRPfejMKgfIdF\[CA]\?Z<RQV97S64P31M0.J-+G*(D'%A"!!6;:9zy6543210/(-n+*)('g}#"!awuzyxqvotWrqTonPlkNiKaeHFbEC_^A\>TSX;9U86R53O20L/-I,*F)'CBA#8!<;|z21ww.321rq.-&mkkj'&%|#d!~}{zy[[putWUqjinQOkNLhgJeG]\aDB^A?[><X;9U86R53O20L/-,,AFED'&A@?8=~;:{y105vt2sq/.o,l#(ig%fd"ca}^z][wZXtWUqTRnmlONihgf_HFFE_^]\UZ=XWV97MLQ42N1/KJ-+G@?D'%$$9>=~;{327xvuu,10qo-&%*ki'hf$ec!b|_]y\ZvutWVqponmfkNihgfIdcbDDYAAV[ZY<;VUTSRQPOH1LKJIH*@EDCB$:#8=<;4927xvvu,1r/.-,m*)i'hf$ec!~a|^tsx[YuXVrqToQgfkNLhKIeHFbEC_B@\?=Y<:VUT76KP3NMLK.IH*FE(C%;:?"~<}{98yw5.-2sq/pn,mk)jh&ge#db~a_{zy\[voXsrqpSnmlNNcKKedcFE_^W@>>=XWVUNS6QPON1/EDI,*F)'&&;@?"=}549zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedcFaB^A?>>SXW:8TMLQ42N1/K.,H+)E(&B%#?"~<;:{z76543,sqqp-,+*)(!&g$#d!~}|{^\xqpuXVrqTRngfkNLhKIeHFbaD_AWV[><X;988MRQ42NGFKJI,+FEDCBA:?"~~}:9876543,1r/.-n+*j(igff{"!b}_uty\ZvYWsrUpRhglOMiLJfeHcE[Z_B@\?=Y<:V97S64PON10KJIHGFED=B%@?>=<|49876v.u,10).-&+l)('h%$d"ca}|_]yrqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S6433HMLK.-B+))(C<A$?>=~;:987xv4-,1rp.omll#('h%e{z!b|_]yx[vXnmrUSonQlNdchKIeHFbEC_B@??TYXW:9TMR5PO2ML.JI,*F?>C&$@#!=~|:{y7xv4us1rp.om+ljii~%$#dc~}v_]]\wvunsVqponQlkMiLJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&$@?>!~;:927xvvu210/.',m*)('h%$d"cauzy\ZvonsVTSShmlOjLbafIGcFDCA]@>Z=;W:8T75QPO21LKJIHAF)''&A@?>=<;49z76w432rr).-n+k#"'hf$#d!awv{^\x[YutWrTjinQONNchgJeG]\aDBAAV[Z=X:POT75Q42NM0K-CBG*(''<A@?"!<;:9876/4u210/.n&+*)(h~g|#"!x}v{^yxwvYtsUqTRnQOkjMKg_dGEaDB^A?[><X;9U86R5322GLKJ-,AF)DC&A@">!};|z8ywvv-21rp.'&+lj('hf${z!b|_]y\ZvYWsVTSShmlkNMhgeHFFE_^]V[>YXWV9TS5Q42N1/..CHG*E'=<A$">!};|z8yw5vt2sq/pn,+*kj'&%${"caa{zyxwvotWrqTonPlOMiLJfIGcFD_B]?UTY<:VU8S5KJO20L/-I,*F)'C&$##8=<}:z216wu321rq.-,+*)"'hffe"!~}|{zyrwZutWrqponQOkdchKIeHFbEC_^A\>TSX;988MRQ42NGFK.,H+)E(&B%#?"~<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrUponmlOMibafIGcFDCA]\?Z<RQV97S6433HML/J,BAF)'CBA$#>7<}{{z765.3t10q.-m+lj('h%e{z!b|{^y[qpuXVrUSRRglkNiKaeHFEEZ_^A?[TSX;9U86R53O20L/-IHG*)DCB;@#>=~;:z8yw5vt2sq/pn,mk)(ig%|{"ca}^z][wZXtWUTTinmlONihgfe^cFaC^]?[><;;PUT7R4JIN1/K.,H+)E(&B%#?"~<}{9zx654ut10/.-,+$)j'&%$#cy~}|{]s\qputsrkpSQQPejMhgJedcEEZ_^A?[TSX;988MRQ42NGFK.,HG*E'=<A$">!};|z87x5u-,1rp.om+lj(ig%$#dcx}^^]xwpuXsrUpoQmlOjLbafIGcbEBXW\?=Y<:V97S64P31M0.J-+G*(DCB%$?>7<}{{z7654-2s0/.-n+*j('h%e{z!b__tyx[vXnmrUSoRPlOMiLJfIGcFDCA]@>==RWVU87RQPOHM0KJIH+FE'C&$##8=<}{9216wu3tr0qo-nl*ki'hf$ec!b|_]yxwZYtsrqpohmPkjMKaeHFbaDB^WV[><XW:8TMLQ42N1/K.,++@ED'B$:9>!}||387xv4-,1rpoo&+*ki'~}$#"cb}|{zyxwpYWWVqponmlkjchKfeHcbaCCX]\?Z<RQVUT76QPONMLKJCH+FEDCB$:?>=<|4{2765.3,1rppo&m*)(ig}|#db~a_{^\xwZuWmlqTRnQOkNLKKedcFEZCAA@[TY<WVU8SR4P31ML/-IBAF)'&&;@?"~<549zx65vt2+*/pnmm$)(i&f|{"ca}^z][wZXtWUqpoRQlejMKKJed]Fa_B]\[ZY<:VONS64P31M0.--BGF)D&<;@#!=<}:z216wu32s0p(',mk)jh&ge#dbaav{zy\[vunWUUTonmfkNihgJedFbEC_B@\?=<<QVU86RKJO20LK.,HA@E(&BA$?!76;|z8yw5vt2sq/pn,+*kj'&%|#dbba|{zyr[vutWrqpRRglkNiKaeHFbEC_^A\>TSX;9U8655JON1L.DCH+)E(&B%#?"~<}{9zxww.321rq.-,+$kiih%$#"!x}{zy\wvXtsVTpihmPNjiLgI_^cFDCA]@>Z=;::OTS64PIHM0.J-+G*(D'%A@#>~65:{yxx/432sr/.-,+$)jhhg$#"!~}v_zyx[vutVVkpoRmOediLJfeHcE[Z_B@\?=Y<:V9766KPO2M/EDI,*F)'C&$@#!=<}{921654ut10/.-,%ljji&%$#"!~w|_zyx[vuWsrUSohglOMiLJfIGcFDCA]@>Z=;W:8T7544INML/.IHGFEDC<A$?>=~|438yw54u2r*).om+lj('h%e{z!b|_]\\qvuXVrkjoRPlOMiLJfIGcFDCCX]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>=6;49zxxw.3t10/p-,l*)jh&}|#db~a_{z][wpotWUqTRQQfkjMhJ_dGEaDB^A?[><X;9UTS65JO2MLK.IH*F)'&&;@?"~<549zxww.32s0p(',mk)jh&geddy~}^zsrwZXtWUqTRnQOkNLhgfIHc\ECCB]\UZ=XWV9TS5Q42N1/KJ-H*@?D'%A$">=~;{327xvuu,10qo-&%kk"'&%fe"!x}{zy\wvXtWUqpSnPfejMKgJHdGEDDY^]@[=SRW:8T75Q42N1/..CHGF)(CBA:#!!~;:9816w432s0/o-,m*j"!&ge#db~a_{^\x[YuXVrUSoRPlOMLLafedGFa_^W\?ZYX;VU7S64P3100EJI,*F?>C&$@#!=~|{{276wu3,+0qo-nl*ki'hf$ec!~}_zyxwvoXVVUponmlkdiLgfeHF\[CA]@>Z=;WV9T6LKP3100EJI,G)?>C&$@#!=~|:{y7xv4us10/po,+*)('~%f#"!bvuz][wvYtVlkpSQmPNjMKgfIGc\[CA]@>Z=;W:8T75Q4211FKJI,+FEDCBA@9"~~}:9876543,1r/.-n+*)ii~%$ec!xw|_]yx[vXnmrUSRRglkNiKaeHFbaD_AWV[><X;9U86R53O20L/-I,*FED'&A@?>=<;:38y65432r*/.-,l$k"'&}$#z!b}|{^yxwYYnsrUpRhglOMiLJfIGcbEBXW\?=Y<:V97S64P31M0.J-+**?DCB%$9"~~}:38y654u21q/.om+$#(ig%fd"ca}^z][wZXtWUqTRnQONNchgfIHc\aD_^]@[Z<X;988MRQ42NGFK.,++@ED'%A:9>!};|z87x5u-,1rp.om+lj(igff{"!~a{zs\ZZYtsrkpSnmlOjihJJ_dcFDYX]@>ZY<:VONS6433HML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hfeez!~}_zyxqvYtsrUpoQPPejiLgI_^cFD_B]?UTY<:V9766KPO2M/EDI,*))>CB%@"87<}{9zx6wu3tr0/p-m%$)('hg$#"!xa__^yxwvunsVqpoRmlNjiLgI_^cFDCCX]\?=YRQV9766KPO20LEDI,*FE(&B;:?"~<}{9zx6wu3trqq(-,mk)"!&%$ed!~}|{ty\wvuXsrTpSQmlOjLbafIGcbEBXW\?=YX;V8NMR5322GLK.I+A@E(&B%#?"~<}{98yw5.-210qp-,+*)(!hffe"!~}|{zsx[vutWrqSonQlNdchKIeHFbEC_B@\?=Y<:V97S64P3100EJIH+*EDCBA@?8=~;:9z76v4us1rp.-nl*#"'hf$ec!b|{^\xqpuXVUUjonQOkdchKIeHFbEC_^A\>TSX;9U8655JONM0/JIHGFEDC<%@?>=<|49876v.u,10/(-&+ljji~%f#"!b}|^]]rwvYtVlkpSQmPNjMKgfIdF\[CA@@UZY<W9ONS64P31M0.--BGFE('<A$?>=~;:9yy054us1*).om+lj('hf${z!b|_]\\qvuXVrkjoRPlOMiLJfIGcFDCA@@UZYX;:UN7554ONGL/JIH+FE'C&$@?"=}549zxww.32sq/(',mk)jh&ge#db~a_{^\[[putsVUpohmPkjiLgfHdcFaCYX]@>Z=;WV97SLKP3100EJI,G)?>C&$@#!=~|:{y7xv4us1rp.-,ml)('~geed!~}|uz]xwZutsrqTRngfkNLhgJHd]\aDB^A?[><XW:U7MLQ42N1/KJI,+FEDC<A$?>!}549zx6wu3tr0qo-nlkk"'&g$dzy~a_{^\x[YXXmrqTRngfkNLhgfIHcba_XA??>YXWVUTMR5PON1LK-I,*F)'C&$@?"=}549zx65vt2+*/pn,mk)(i&f|{"ca}^z][wZXtWUTTinmlONihgfed]bE_B]\[==RWV9T6LKPON10KJIHGFE>'%%$?>=<;:9816w432s0/o-,mk)"!&ge#db~a_{z][wpotWUqTRnQOkNLhKIeHFbaCB]\[ZYXWVOT7RQPON0FKJIH*@)>CBA:?8=~;:{87654us1*).om+*ki'~}$ec!b|_]yx[vXnmrUSoRPlkjMLaJHHGb[C^]@>TSX;9U86R53O20L/-,,AFE(C%;:?"~<}{9zxww.32sq/(',mk)('hg${"caa{zs\wvuXsrTSShmlOjLbafIGcFDCA]\?Z<RQV97S64P31M0.J-+G*(''<A@?"!<;4{yyx543,1r/.o,+*jj!&%f#cyx}|{^]xwvotWrqpSnmOkNLhKIHH]baD_AWV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<;:{z7654-trrq.-,+*#(i&%f#"!~}^zsrwZXtsVTpihmPNjMKgJHdcFaCYX]@>Z=;WVU87RQPONGL/JI,*@?D'%A$">!};|z8ywvv-21r/o'&+lj(ig%fdccx}|_]yrqvYWsrqTSnmlkjibKIIHcba_^]V[>YXW:UT6R53O20LK.,HA@E(&%%:?>!<|438yw5vt2sq/pn,mk)jhgg|#"!ba|{zyxwvotWrqTonmOOdihKfH^]baCB]\[ZYXWVO8SRQPO1GLKJI+A*?DC<A@9>!}}|38y654u210pp',+l)i!~%fd"!b}_uty\ZvYWsVTpSQmPNjMKgJHdGEaDBAAV[ZY<;PU8SRQP3NM/KJ-H*@?D'%A$">!};|z8yw5vt2sq/pnmm$)('hg$#"yb_zyxwpuXsrqpSnmOkjMKg_dGEaDBAAV[Z=;WPOT7544INM0K-CBG*(D'%A$">!};|z8yw5vtss*/.-nm*)('~%f#"!~a|{]yx[vXnmrUSoRPlkNLhaeHFbEC_B@\?=Y<:V97S64PON10KJIHG@)DCBA$?>=}}4zz1654ut10/.-,+$kiih%$#"!~}|uz]xwvuXVlkpSQmPNMMbgfIdF\[CA@@UZY<W9ONS64P31M0.J-+G*(D'%A$"!!6;:9zy6543210/(-n+*)('g}$#"!awuzyxqvotWrqpoRmlNjMKJJ_dcFDYX]@>Z=;W:8T75Q42N1/K.,HGF)(=&$$#>7<}:9z76543tr0)(-nl*)jh&}|#db~a_{^\xwZuWmlqTRnQOkjiLKf_dGbaDBXW\?=Y<:V97S64P3100EJI,G)?>C&@#!=~|{{276wu3,+0qo-,+lk('~geed!~}v{^yx[vutVVkSShmlkNMhgf_dGbaD_^]??T<!<;:98yw5.-2sq/.om+#(ig%e"bxw|_]y\ZvuXVrkjoRPlOMiLJfIGcFDCA]\[>=XWVUTMR5332MLKJIHA*(('BA@?>=<5:{876wu-,rr).-,ml)('&%#z!b_zyxwvutslUponQlkMiLJfeHcE[Z_B@\?=<~65:{y7xv4us1rp.om+lj(ig%fd"cauzyx[ZunWUUTonglOjiLgfedcFDYX]@>ZY<:VONS64P31M0.JI,G)?>C&@#!=<;|{8705v32sq)(-nl*ki'hfec!b__tyx[vXnmrUSoRPlOMLLafeHFb[Z_B@\[Z=<<;VUTSRK4ON1LKJ,HG*)DCBA@9"~~}:98765.3t10/pn&%kk"'&%fe"!~}|{ty\wvuXsrTpSQmPNjiLgI_^cFD_B]?UTY<:VU86RKJO20L/-I,*F)'C&##8=<;|{8765432+rppo,+*)('&%|#d!~a|{z\\qvuXsUkjonmPOjihgfedc\aD_^]\[=SXWVU7M6KPINMLEJ-++*?(CBA?>~<}{9zx6wu32s0p(',mk)jh&ge#"c~vuz][wZXtWUqTRnmPkMcbgJHGG\a_BAV?===B%#?"~<}{98y6v.-2sq/pn,+lj(!~%fd"ca}^z][wZXtsrUTonmlkjihaJedcbaCY^]\[=S!<|43876wv-2sqqp-&m*)(ig}|#db~}{]srwZXtWUqTRnQOkjMhJ_dGEaDB^A?[>C&A@#>=<;:{y70/4us10qo-&%*ki'hfec!~a|^tsx[YuXVrqpSRmlejMhgJH^]bEC_B@\?=Y<:V9766KPO2M/EDI,*F)'C&##8=<}{9216wu321rq.-,%ljji&%#z!b}|{^yxwvuXVrkjoRPlkNLhaeHFbaD_AWV[>'%%?8=~;:{87654us1*).om+*ki'~}ec!b|_]yx[vXnmrUSoRPlkjMLgeHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A">!}||387xv4-,1rp.-,ml)(!hffe"!~w|_zyx[vutsrUSohglOMihKfH^]bEC_B@\?=<Z=;W:8T75QP31MFEJIH+*EDCBA@9"~~}:987654-2s0/.o,+*jj!&%f#cyx}^]]rwvYtVlkpSQmPNjMKgfIdF\[CA@@UZY=<;:927x543t10p.om+lj(igff{"!b|uty\ZYYnsrUSohglOMiLJfIGcFDCA]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>7<;49zxxw.3t10q.-,ll#ii~%#dcx}{zy\wvXtWUqTRnQOkNLhKIeHFbECBBW\[>=<;:38y654u210pp',+lj(!~%fd"ca}|_z\rqvYWVVkpoRmOediLJfIGFF[_B@\UTY<:V97S64P31M0.--BGFE('BA@?>=<;49z76543s+0/.-m%l#('&}{"c~}^tsx[YutWrTjinQOkNLKKedGbDZY^A?[>'%%?8=~;:9z76v43t1q)(-nl*)j'g}|#db~a_{z]xZpotWUTTinmPkMcbgJHdGEaC^@VUZYX;:UNS6QP3NMLKJ-+G@?D'%A@#!=65:{y7xv4us10q.n&%*ki'hf#"cb}|u^\\[vutmrUpoRPfejMKgJHdGEaDB^A?>>SXW:U7MLQ42N1/K.,++@ED'%A:9>!};:9zy654-2s0/.o,+*)(ig%|{"ca}|_]yrqvYWsrUpRhglOMiLJfeHFb[Z_B@\?=Y<:V97S64P31MLK.-HGFE>'BA">=<;:{z76543,1r/.-nl#ii~%#dc~}|{zyr[YYXsrqponmfkNihgJedFbEC_^A?[TSX;9UT7R4JIN1/..CHG*E'=!};|z8yw5vt2sq/pn,+*kj'&%#"!x}{z]xwvXXmrqToQgfkjiLKfedcba_XA\[ZYX:PUTSR4J3HMLKDIBG*(('=~;:z87x5u-,1rp.om+*k(h~}ec!~a|^tsx[YuXVrUSonQlNdchgfIH]bE_B]\[ZY<:VONS64PO20LEDI,*F)'C&@?"=}549zx6wu321rq.'nllk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<=<;:{y70/4us10qo-&%*ki'&gdzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_^]@?ZYXQ:UT75QPONM0/JIHG@E(CBA"87}}4987xw43210)pnnm*)('&%|#d!~a|{]\\qvuXVrkjoRPlOMiLJfeHcE[Z_B@\?=<C&#>=<;:981x54us+0/.-nm*)('&%{dbba|{zyxwvunsVqpSQgfNNchgfIHcba_^]\UZ=XWVUT6LQPON0F/DIHAFE>C&A@?"=<|{{276w4t,+0qo-nlkk"'&gdzy~a_{z]xZpotWUqpSnPfejMKgJHdGEaDB^]\?>S<::9TMR5PO20FEJ-+GF)D&<;@#!=~|{{276w4t,+0qo-nl*ki'hfec!b|_]yxwZYtmrUSSRmleNihgJedFbEC_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<;|9y10vv-210qp-,%ljji&%{"c~}{zyxwZXtmlqTRnmPNjcbgJHdGEaDB^]@[=SRW:8T75QPO21LKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hfec!b__tyx[YunmrUSonmPOjihgIGGFa_^]V[>YXW:UTSRQ42NGFK.,HG*(D==~;{327xv4us10qo-&%*ki'hfec!b|_]y\ZvutWVqponmfkNLLKfedcbaZCAA@[ZYXWVUNS6QPO20FE--BGFE('BA@?>=<5:{87x54tss*/.om+#(ig%fd"ca}|_z\rqvYWsVTSShmlOMibafedGFa_^]\[ZS=~;{327xv4us1rp.om+*)ji&%|#d!~a_uty\ZvuXsUkjoRPlOMLLafeHcE[Z_B@\?=Y<:V97S64P31M0.JIH+*EDC<%##"=<;:38y654u21q/pn,mk)(i&f|{"ca}|_z\rqvYWsVTpSQmPNjMKgfIdF\[CCX]\[>=XWVUNS6QPON1LK-I,*FE(&B;:?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{zs\ZZYtsrqponmfkNihgfIdcbaCA]VUZ=;W:877LQP31MFEJ-+**?DC&A#98=~|:{y7xv4us1rp.om+ljii~%#dc~}|{zyxwpuXsrqpoQglkjiKaJ_dcb[Y^A\[ZYZ=;W:8T75Q42NML/.IHGF?(&&%@?>=<5:{87x54321rp.'&+lj('hf{z!b|_]y\ZvuXsUkjoRPlOMihgJIdcbaY^A\[>=~;:987xv4-,rr).-,ml)('&%#"yb}|{zy[qvutsUkTinglkjchKIIH]bE_B]\[ZY<:VON66KPON10EJ-HGF)DC%9>=~|:327xv43t1q)(-nl*ki'&ge#zy~a_{^\x[YuXVrUSoRPlkjMLgIGGFaY^A\[>YXW9UT76QPIN1LKJ-+A@((=BA@#"=<;4{yyx5432+0q.-,m*)i'hfec!~a|^tsx[YutWrTjinQOkjMKg_dGEaDB^A?[>=~}:98765.3t10q.-,+*ki'~}ec!~a_{tsx[YuXVrUSonQlNdchKIeHFbaCB]\[ZYXWP9776QPONMLKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hfec!b__tyx[YunmrUSonmPOjihgfedc\aD_^]\[=SXWVU7M6KPONGLEJ-HGF)DC%A">=~;{327xv4us1rp.om+lj(ig%fd"cauzyx[ZoXVVUpinQlkNihgIedGFaZ_B]\[>C&A@?"=<|{{276w4t,+0qo-nl*ki'&gdzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbaCB]\[TYCB%@"87<}{98y6v.-2sq/.om+#(ig%fd"ca}^z][wZXWWlqpoRQlkdiLgfeHcbDCA]@>Z=;::OTS6Q3IHM0.JI,G)?>C&@#!=~|:{y76w4t,+0/.on+*)"i&%fd"!~}|_t]xwvutslqTonmPkjLKKedGbDZY^A?>>SXW:U7MLQ42NM0K-CBG*(DC&A#98=~|{{2765v-2s0/.-n+*)ii~ff{"!~au^\\[votWrqpoRmlNMMbgfIGc\[CA]\?Z!}||3876wv3,1r/.-,m*)i'&gdzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_B@\[Z==6}{{z76543,1r/.-,mk#"'hfecbbw|{^y[qpuXVUUjonQlNdchKIeHFbEC_B@\?=Y<:V9766KPON10KJIHG@E(CBA@#>=};|zyy054us1*).om+lj(ig%fd"ca}^z][wvuXWrqponmfOjiLJfedcbEZC^]\[ZYRW:UTS6QP2N1/KJ-H*@?D'%9>=~|:327xv4us10qo-&%*ki'hfec!b|_]y\ZvutWlqTonmlOjihJJ_GG\a_BAV?===~;{327xv4us1rp.om+lj(ig%fd"ca}^]]rwvuXWrkpSnmlkNihJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&@#!=<;|{870w4321r/.-mmjj!&%ed!~}|u^\\[vutsrkpSnmlkNLbafIGcFDCCX]\?Z=<;:38y654u21qpp',+lj(!~%fdccx}|_z\rqvYWsVTpSQmPNjMKgJHdGEaDB^]@[=SRW:877LQPO2GL/JIHG*EDC%%:""7<;:{z1xvvu2+0q.-,+l)(hgg|#"ca}vuz][wvYtVlkpSQmPNjMKgJHdGEaDB^A?[>~65:{y7xv43tr0)(-nl*ki'hfec!b|_]y\ZvutWVqpiRmlOMihgfeH]Fa_^]\UZ=;W:UNSRQP3HM0KJIH+FE'CB%@"87<}{9zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRgPNNchKIIH]bE_^]\?ZYX::O77LQPO21FK.IHG*(DCBA@#8!<;:98705v321r/.n,+l)i!~%fdccx}|_]yrqvYWsrUpRhglOMiLJfIGcFDCA]\?ZO;M\[87o#WE2pSh.?,=iu:s&Gc\"~~XjzUgfwd:ss7L533!1}KhIH+@d>P<$$?![6}X9yUCBvQ,1=Mo',I*6"iDVfA@.?<_M\r8IHXV31So/.lkjvLtH%F#!DC1|?>gSXuPb'6p4n2mGFEi-yTFcD=%_#"8J<}{Fyx05SRPPa/L-,lH)F43fCAc!aaOu;:xZpH533TCBQzlOMvKgfe$]"D!C^j/>-w+u)O'6%$J\mM}E{,fx@E'=<_$po!6lkjz7wvAR,1a/.^&l$#Yig}|d/yx}=NM:9w%u5m3D0|.@-ewcKgsI7G#nBA0/.yxeWtb'6pK43lkkEW-,Gdcb&&r_pK7~5|W2UgTR-sba/_^Jl$6F!hV1TAcQP<;;9977uWmEDS0.gfxdv;gsHH6\!B|0i.xYvvPU7&_5]2ll}ihgHfeRQC&A#^!!}|Y9iVCSuQQPN<L^JJHGFF&V$AcyQw_{t\\J6H5sU1}Bhg?+*L(aJ%dGF!32|j{zT<w*P8'S%oJm[0k.i,g*e(c&a$_"]~[|YzWxUvStQrOpM:JJljFF&V1{@RQ  Try it online! • What assembler did you use? – user100411 Sep 29, 2021 at 13:52 # J, 22 bytes ', I''m J!',~'Hi',3}.]  Try it online! # 05AB1E, 23 21 bytes Saved 2 bytes thanks to Kevin Cruijssen ',«#À„Hiš"05AB1E!"ªðý  Try it online! Explanation ',« # append "," # # split on spaces À # rotate left „Hiš # prepend "Hi" "05AB1E!"ª # append the language name ðý # join on spaces  • 21 bytes. And too bad the exclamation mark is there.. Since •äƵí•hR is 1 byte shorter than "05AB1E". :) May 21, 2019 at 7:44 • @KevinCruijssen: Wow! I feel stupid that I didn't start with the ",". Yeah I tried •äƵí•hR as well, but as you say, it unfortunately doesn't save any here. May 21, 2019 at 8:08 • Feb 18, 2021 at 23:04 # QuadR, 22 bytes ^...$
Hi
, I'm QuadR!


Try it online!

This replaces:

^... three initial characters
and
\$ the end-of-line

with

Hi
and
,I'm QuadR
respectively

• So you could exchange the middle two lines and change the language to Retina and still beat @KevinCruijssen's answer?
– Neil
May 21, 2019 at 12:28
• @Neil I guess so, but your's is still shorter. Tbf, QuadR is but a thin cover for the not-intended-for-golf ⎕R` APL operator.
– Adám
May 21, 2019 at 15:22
• Ah, but my answer only works for Retina 1, not Retina 0.8.2 though.
– Neil
May 21, 2019 at 15:35