[Question]
  [
["First they came..."](https://en.wikipedia.org/wiki/First_they_came_...) is a poem by [Martin Niemöller](https://en.wikipedia.org/wiki/Martin_Niem%C3%B6ller):
```
First they came for the Socialists, and I did not speak out-
Because I was not a Socialist.
Then they came for the Trade Unionists, and I did not speak out-
Because I was not a Trade Unionist.
Then they came for the Jews, and I did not speak out-
Because I was not a Jew.
Then they came for me-and there was no one left to speak for me.
```
Your task is to output the above. This is [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'"), so shortest code in bytes wins!
# Rules
* You may include extra whitespace that does not affect appearance. A single trailing newline is allowed.
* Otherwise, the output must match exactly, including the location of newlines.
* As per meta standards, you may output a list of strings. However, you must include the empty lines.
Note that I personally believe this is not a dupe because of how the poem is laid out - it needs some creativity to golf. Meta discussion about whether this is a dupe or not can be found [here](https://codegolf.meta.stackexchange.com/q/13767/58826).
  
[Answer]
# [SOGL V0.12](https://github.com/dzaima/SOGL), ~~103~~ ~~102~~ 101 [bytes](https://github.com/dzaima/SOGL/blob/master/chartable.md)
```
 →∑‘¾ο╤Ε9‘}ψ⁴‘¹"4¡‘Q°‘:¹¹I{ū_:¹"Eā/}l6⁸SÆ□⁴↔b⅜╬I℮;YΥηκ*█⅞F^Κ⅜⁸{x⅔⁵⅟╚?Z‘O}"Ι╚╬√⅔δηvΧχ⁷⁾Η<υL┼!Ο'μΠ⁵╝⁷‘⁾
```
[Try it Here!](https://dzaima.github.io/SOGLOnline/?code=JTIwJXUyMTkyJXUyMjExJXUyMDE4JUJFJXUwM0JGJXUyNTY0JXUwMzk1OSV1MjAxOCU3RCV1MDNDOCV1MjA3NCV1MjAxOCVCOSUyMjQlQTEldTIwMThRJUIwJXUyMDE4JTNBJUI5JUI5SSU3QiV1MDE2Ql8lM0ElQjklMjJFJXUwMTAxLyU3RGw2JXUyMDc4UyVDNiV1MjVBMSV1MjA3NCV1MjE5NGIldTIxNUMldTI1NkNJJXUyMTJFJTNCWSV1MDNBNSV1MDNCNyV1MDNCQSoldTI1ODgldTIxNUVGJTVFJXUwMzlBJXUyMTVDJXUyMDc4JTdCeCV1MjE1NCV1MjA3NSV1MjE1RiV1MjU1QSUzRloldTIwMThPJTdEJTIyJXUwMzk5JXUyNTVBJXUyNTZDJXUyMjFBJXUyMTU0JXUwM0I0JXUwM0I3diV1MDNBNyV1MDNDNyV1MjA3NyV1MjA3RSV1MDM5NyUzQyV1MDNDNUwldTI1M0MlMjEldTAzOUYlMjcldTAzQkMldTAzQTAldTIwNzUldTI1NUQldTIwNzcldTIwMTgldTIwN0U_)
Explanation (here I replaced the compressed strings with `..` to save space):
```
..‘.‘..‘                              push "socialist", "trade unionist" and "jew"
        ¹                             wrap in an array: ["socialist", "trade unionist", "jew"]
         "..‘..‘                      push "first" and "then"
                :                     duplicate the then
                 ¹                    wrap in an array: ["first","then","then"]
                  ¹                   wrap those two in an array: [["socialist", "trade unionist", "jew"], ["first","then","then"]]
                   I                  rotate clockwise: [[first,socialist], [then,trade unionist], [then,jew]]
                    {         }       for each do, pushing the array
                     ū                  uppercase the 1st letter of each word in the array - ["First", "Socialist"]
                      _                 splat the contents on the stack   "First", "Socialist"
                       :                duplicate the 2nd one             "First", "Socialist", "Socialist"
                        ¹               wrap in an array                  ["First", "Socialist", "Socialist"]
                         "..‘           push "ŗ they came for the ŗs, and I did not speak out-\nBecause I was not a ŗ." with ŗ replaced with its appropriate item in the array
                             O          output that
                               "..‘   push "then they came for me-and there was no one left to speak for me."
                                   ⁾  uppercase the 1st letter of it
                                      implicitly output it in a new line
```
[Answer]
# [6502 machine code](https://en.wikibooks.org/wiki/6502_Assembly) (C64), 229 bytes
Kind of boring, still doable on a C64 with a *somewhat* decent amount of bytes :)
```
00 C0 A9 17 8D 18 D0 A2 2C 86 FE A6 FE A0 C0 BD B6 C0 20 1E AB C6 FE 10 F2 60
C6 49 52 53 54 20 00 D4 48 45 4E 20 00 54 48 45 20 00 54 48 45 59 20 43 41 4D
45 20 00 46 4F 52 20 00 53 50 45 41 4B 20 00 41 4E 44 20 C9 20 44 49 44 20 4E
4F 54 20 00 4F 55 54 2D 0D 00 C2 45 43 41 55 53 45 20 C9 20 57 41 53 20 4E 4F
54 20 41 20 00 4D 45 2D 41 4E 44 20 54 48 45 52 45 20 57 41 53 20 4E 4F 20 4F
4E 45 20 4C 45 46 54 20 54 4F 20 00 4D 45 2E 00 2E 0D 00 53 2C 20 00 D3 4F 43
49 41 4C 49 53 54 00 D4 52 41 44 45 20 D5 4E 49 4F 4E 49 53 54 00 CA 45 57 00
0D 00 8C 35 3A 6B 2A 1F B4 90 B0 56 50 3A 41 93 B0 25 35 2A 1F B4 90 A1 56 50
3A 41 93 A1 25 35 2A 1F B4 90 97 56 50 3A 41 93 97 25 35 2A 18
```
### [Online demo](https://vice.janicek.co/c64/#%7B"controlPort2":"joystick","primaryControlPort":2,"keys":%7B"SPACE":"","RETURN":"","F1":"","F3":"","F5":"","F7":""%7D,"files":%7B"came.prg":"data:;base64,AMCpF40Y0KIshv6m/qDAvbbAIB6rxv4Q8mDGSVJTVCAA1EhFTiAAVEhFIABUSEVZIENBTUUgAEZPUiAAU1BFQUsgAEFORCDJIERJRCBOT1QgAE9VVC0NAMJFQ0FVU0UgySBXQVMgTk9UIEEgAE1FLUFORCBUSEVSRSBXQVMgTk8gT05FIExFRlQgVE8gAE1FLgAuDQBTLCAA009DSUFMSVNUANRSQURFINVOSU9OSVNUAMpFVwANAIw1OmsqH7SQsFZQOkGTsCU1Kh+0kKFWUDpBk6ElNSoftJCXVlA6QZOXJTUqGA=="%7D,"vice":%7B"-autostart":"came.prg"%7D%7D)
Usage: `SYS49152`
**Explanation:**
As this contains mostly data, instead of a meaningless disassembly listing, here's the [`ca65`](http://cc65.github.io/cc65/)-style assembly source that creates this machine code:
```
.segment "LDADDR"
                .word   $c000           ; load address
.code
                lda     #$17            ; upper/lower mode
                sta     $d018           ; store in VIC register
                ldx     #revpoemsize    ; initialize ...
                stx     $fe             ; ... counter
loop:           ldx     $fe             ; load current position
                ldy     #$c0            ; highbyte of strings always same
                lda     revpoem,x       ; load lowbyte from table
                jsr     $ab1e           ; output 0-terminated string
                dec     $fe             ; decrement position
                bpl     loop            ; >=0 ? -> repeat
                rts                     ; done
first:          .byte   "First ", 0
then:           .byte   "Then ", 0
the:            .byte   "the ", 0
came:           .byte   "they came ", 0
for:            .byte   "for ", 0
speak:          .byte   "speak ", 0
didnot:         .byte   "and I did not ", 0
out:            .byte   "out-", $d, 0
wasnot:         .byte   "Because I was not a ", 0
noone:          .byte   "me-and there was no one left to ", 0
me:             .byte   "me.", 0
period:         .byte   ".", $d, 0
comma:          .byte   "s, ", 0
socialist:      .byte   "Socialist", 0
unionist:       .byte   "Trade Unionist", 0
jew:            .byte   "Jew", 0
p:              .byte   $d, 0
revpoem:        .byte   <me, <for, <speak, <noone, <came, <then, <p
                .byte   <period, <jew, <wasnot, <out, <speak, <didnot
                .byte   <comma, <jew, <the, <for, <came, <then, <p, <period
                .byte   <unionist, <wasnot, <out, <speak, <didnot, <comma
                .byte   <unionist, <the, <for, <came, <then, <p, <period
                .byte   <socialist, <wasnot, <out, <speak, <didnot, <comma
                .byte   <socialist, <the, <for, <came, <first
revpoemsize     = * - revpoem - 1
```
[Answer]
# [Python 3](https://docs.python.org/3/), 209 bytes
```
t='they came for '
s='First '
for i in'Socialist','Trade Unionist','Jew':s+=t+f'the {i}s, and I did not speak out-\nBecause I was not a {i}.\n\nThen '
print(s+t+'me-and there was no one left to speak for me.')
```
[Try it online!](https://tio.run/##LY6xDoJAEER7v2K71SA0diY0Fibaih3NBZawEfbI7RJCjN@OnNJNZjJvZpit9XJaFsvRWpqhcj1B4wPgTnO8clBbZTQYWPDhK3Ydq@ERi@Bqgqewl79xpwnPmuSWNBEGb/7oEZzUcIOaaxBvoAO5F/jR0lIuVLlRaU0np7/UxU5WSilFS7IOD4HF9ppYgj2lEbWCA20F8ELQUWNgfiPHpz1leFiWLw "Python 3 – Try It Online")
-5 thanks to [Felipe Nardi Batista](https://codegolf.stackexchange.com/users/66418/felipe-nardi-batista).
[Answer]
# [Perl 6](https://perl6.org), 193 bytes
```
say join ' they came for ','First',«Socialist "Trade Unionist" Jew».map({"the {$_}s, but I did not speak out-
because I was not a $_.
Then"}),'me- and there was no one left to speak for me.'
```
[Try it online!](https://tio.run/##LY5BCoMwFAX3nuIhQlqILnuEQrutXctXv5hWE0kiIuKJeoTuvJjV4vIxj2E6ts1lXR2NeBmlIeBrHlFQy6iMhZDiqqzzQi6fhykUNcp5hKmlkvHUyuhth7jzsHyTlrrTFG4CTFE2O4m897ihVCW08XAd0xum93GQc0G94w0O5P6QEGVJEKQ163A@S9FyDNLlnmP5eMFoRsOVhzeHbW9sORHr@gM "Perl 6 – Try It Online")
[Answer]
## [Perl 5](https://www.perl.org/), 185 bytes
```
print join" they came for ",First,(map"the ${_}s, and I did not speak out-
Because I was not a $_.
Then",Socialist,"Trade Unionist",Jew),"me-and there was no one left to speak for me."
```
[Try it online!](https://tio.run/##LY69CsIwGEX3PsUldFBIu/kCDoKu1rl8NF9ptPkhSSkiPntMpePlwDnXc5hPOfugbcLTaSuQJn5jIMMYXYCQFx1ikgdDXhSE@tN/owRZhSuUVrAuIXqmF9ySmurMAy2RC1wp/iGh7tuq6ia2Qt7doGnWxSi6QIrxsNrZsoW88XqUwnCzuUsq8K6As4yZx4Tk9tR2zXArcv4B "Perl 5 – Try It Online")
Thanks to @[Massa](https://codegolf.stackexchange.com/users/52273/massa) for -3 bytes!
[Answer]
# C, 248 bytes
*Thanks to @Zacharý for saving 9 bytes.*
```
p(x,y){printf("%s they came for the %ss, and I did not speak out-\nBecause I was not a %s.\n\n",x,y,y);}f(){p("First","Socialist");p("Then","Trade Unionist");p("Then","Jew");puts("Then they came for me-and there was no one left to speak for me.");}
```
[Try it online!](https://tio.run/##XY/BDoIwDIbvPEWzxGQkwAtw82CiV/XGpRlFFqUj24gSw7NjEU70tP5/@/ebyR/GzHOvP9mYfntvOTZaHQLElkYw2BE0zi8dHELIALmGM9S2BnYRQk/4BDfEvOIjGRwCifvG8HdRVoqKK1aZpEt@OTVajmh1sj5ElamrMxZfVt5pKfKtJZlVN481wZ2t4711offSDzGs0g6zo3wBFNHThgGOCV7URIhu410nCwmaZvkvdGhZp8k3ASkhLJNp/gE)
[Answer]
# [C# (.NET Core)](https://www.microsoft.com/net/core/platform), 248 246 242 bytes
```
a=>{string b=@", and I did not speak out-
Because I was not a ",c=" they came for ",d="Socialist",e="Trade Unionist";return$@"First{c+d}s{b+d}.
Then{c+e}s{b+e}.
Then{c}the Jews{b}Jew.
Then{c}me-and there was no one left to speak for me.";}
```
Actual newlines saved me a few bytes.
[Try it online!](https://tio.run/##TZHBasMwDIbvfgphdmgh6QtkKWWDwsYGg3bsMHZQHbU1S@xhKSsl5NkzOylr/4MEn2T/smw4Nz7Q0LJ1B9icWagplIIoUyMzvAV/CNiMpBtjEguKNfDrbQWvaN2MJcQLPr8Aw4Hn/33XE0nr1pn7qTODKS9hHyGUoAYsl90EYVeudAboKniCKlo4L8A/hN/gW8nVAxlsmWLxhDwWEXRmSg1ypDMYbAj2PkRWlXrjjcXasuiMSr0NWBG8O@tdQkUgaYO7W@m1DSyd6buq526X0kKp7ZFcYjQxumHRCZ7plHhMVx6t83Hy2BDoMiB4R1DTXkD85SFpvoYWuuiH4mZFCh69Y1/T4iNYoRfraJY2NNN6Pr98TFKvpqiGPw)
Saved 2 bytes thanks to *Business Cat*
[Answer]
# [Python 3](https://docs.python.org/3/), 203 bytes
```
print('First',*[f'the {s}s, and I did not speak out-\nBecause I was not a {s}.\n\nThen'for s in['Socialist','Trade Unionist','Jew']],'me-and there was no one left to speak for me.',sep=' they came for ')
```
[Try it online!](https://tio.run/##LY0xD4IwEEb/ym2nBlicXRxMdBUnYGjoERrhrmlLCDH@9kqR9d5979kl9MLnGK0zHA54M84HzE5Vh6En@Pivz0Cxhjtoo4ElgLek3iBTyGu@UqsmTyudld@oSpui5prLnhg7ceDBcIVPaY0aTLJj6ZQmeLER/h8eNGPTZDhSnmJr2tGuBGGCgboAQfZ2ko5UYObJXjB9L9CqkTaAxxh/ "Python 3 – Try It Online")
[Answer]
# [Befunge-93](https://github.com/catseye/Befunge-93), 348 bytes
```
".em rof kaeps ot tfel eno on saw ereht dna-em rof emac yeht nehT"52*:v
v"d not speak out-"*25"Because I was not a "<   p5-2*89p1-2*89"vvJew."<
> "id I dna ">",sweJ>v"67+2p66+5p     v     ^p2-2*89"vTrade Unionist."<
>"tsriF">:#,v>",stsinoinU edarTv"67+3pv     ^   p3+66p40"^_Socialist."<
>"nehT"52*: v>",stsilaicoS@"67+3p     >" eht rof emac yeht "
```
[Try it online!](https://tio.run/##VZBPT4NAEMXv/RQv4w1Ko1RQm4YYDyb2WnqtWWGwm9LdDbss8dMjIDbpHGaSyXu/@fPFVau@ue9pxRc0usJZsLHQDq7iGqw0tIIVHbjhk0OpRDQr@SIK/IxNxaeckjjY@IWnEmpwW8PiDN26iII4oTcuRGsZH@iEnQQCtAVgkigOnl/Mw1TI@x13K9ouMpAsB/kwD5TR0na8yzylT2Fs0jRMDMbwUz6aeHbnjSgZByW1ktZNHHK2ke@Ube6WfuQ4K5WW6gAuRZNPxLWZOeM@6zBNzeM9HT/3upCivnKuR@KfUwtZ6P3rH2IiZITxH7ffob7/BQ "Befunge-93 – Try It Online")
[Answer]
# Befunge, ~~293~~ ~~274~~ 270 bytes
```
62574732594932584832001v_@#:\0\!<
0-*84g+3/"P"\%"P"::+p00<_|#:-1g0
84!-"*":g+3/"P"\%"P"::+1\<+1_$#:^#-2\,-**
&First0 they came for %the Qs, and I did not speak out-*Because I was not a (.**
ThenOme-and there was no one left to speak for me.*$Jew*Socialist/Trade Unionist
```
[Try it online!](http://befunge.tryitonline.net/#code=NjI1NzQ3MzI1OTQ5MzI1ODQ4MzIwMDF2X0AjOlwwXCE8CjAtKjg0ZyszLyJQIlwlIlAiOjorcDAwPF98IzotMWcwCjg0IS0iKiI6ZyszLyJQIlwlIlAiOjorMVw8KzFfJCM6XiMtMlwsLSoqCiZGaXJzdDAgdGhleSBjYW1lIGZvciAldGhlIFFzLCBhbmQgSSBkaWQgbm90IHNwZWFrIG91dC0qQmVjYXVzZSBJIHdhcyBub3QgYSAoLioqClRoZW5PbWUtYW5kIHRoZXJlIHdhcyBubyBvbmUgbGVmdCB0byBzcGVhayBmb3IgbWUuKiRKZXcqU29jaWFsaXN0L1RyYWRlIFVuaW9uaXN0&input=)
This is a different approach to the existing Befunge solution. It uses a kind of linked list to store a dictionary of the common phrases, and then just has a simple list of values on the stack representing the order in which the phrases should be output.
[Answer]
# [Retina](https://github.com/m-ender/retina), 176 bytes
```
 Socialists, Trade Unionists, Jews,1me-and there was no one left to2for me.
( .+?)s,
1the$& and I did not2out-¶Because I was not a$1.¶¶Then
^
First
1
 they came for 
2
 speak 
```
[Try it online!](https://tio.run/##JY3BCoJAFEX37yvuQqJIBf2BoEVQ22wbPPSJQzoTM0@kH/MD/LFJcXu451wvaizHSHi62nBvgoYUledG8LLG2R08ZAppMUjGtoF24gUTB1gHZwW9tAp1Zes8BsnpiPx8OYWUinWaHLBJdzSmWQUt3ajZMl@l5jHIyveQgpMiX@Zlrjqx9Kab8UGpoO3uh5oHwdankhC@wh/E@Ac "Retina – Try It Online") Explanation: The `1` and `2` are just repeated strings which are long enough to be worth deduplicating. The `First` is added later to make it easier to select the placeholder for the repetitive portion, "they came for the [group]s, and I did not speak out-Because I was not a [group]. Then", which is expanded by the second stage.
[Answer]
# JavaScript (ES6), ~~231~~ ~~227~~ ~~223~~ 221 bytes
```
_=>`First${t=" they came for "}the Socialist${a=`s, and I did not speak out-
Because I was not a `}Socialist${t=`.
Then`+t}the ${(u="Trade Unionist")+a+u+t}the Jew${a}Jew${t}me-and there was no one left to speak for me.`
```
---
## Try it
```
o.innerText=(
_=>`First${t=" they came for "}the Socialist${a=`s, and I did not speak out-
Because I was not a `}Socialist${t=`.
Then`+t}the ${(u="Trade Unionist")+a+u+t}the Jew${a}Jew${t}me-and there was no one left to speak for me.`
)()
```
```
<pre id=o>
```
[Answer]
# Java 8, ~~250~~ 236 bytes
```
o->{String t=" they came for ",r="First";for(String s:"Socialist,Trade Unionist,Jew".split(","))r+=t+"the "+s+"s, and I did not speak out-\nBecause I was not a "+s+".\n\nThen";return r+t+"me-and there was no one left to speak for me.";}
```
[Try it here.](https://tio.run/##LZC9bsMwDIT3PsVBkw3/PEANd@hQoAWaDkmnpoMiM40SmzIkOkEQ5NlduRUgDccjD@R31GdduZH42J1m0@sQ8K4t3x4Ay0J@rw1htUhgLd7yD0z2sTuSEbi8ifV7/PEF0WINVmC0mF31dEvt0irIga4weiDsnYcqfaterA@imqiz1Bge1doZq3sbpNx43RE@2Tpe5BtdVB3G3kqmSpXnvmilUDEWqgiFCiU0d3hFZzuwE4SR9AlukmrLz2T0FCi6Fx3@XP0/VW95y5sDsWo8yeQZvoipA1VLWAz3lEbgmNDTXiAuZS@HDFSr5j43/wTGaddHAgnE2cVVhogynff1DZ0njtcgNNRxu3qMlmRcm4ynvs8T0Pv8Cw)
[Answer]
# JavaScript (ES6), ~~210~~ ~~207~~ ~~206~~ 203 bytes
A different approach to [my other solution](https://codegolf.stackexchange.com/a/139919/58974) so figured it was worth editing it out to its own answer now that the challenge has been reopened.
```
_=>`First${["Socialist","Trade Unionist","Jew"].map(x=>t+`the ${x}s, and I did not speak out-
Because I was not a ${x}.
Then`,t=` they came for `).join``+t}me-and there was no one left to speak for me.`
```
---
## Try it
```
o.innerText=(
_=>`First${["Socialist","Trade Unionist","Jew"].map(x=>t+`the ${x}s, and I did not speak out-
Because I was not a ${x}.
Then`,t=` they came for `).join``+t}me-and there was no one left to speak for me.`
)()
```
```
<pre id=o>
```
[Answer]
# [Gaia](https://github.com/splcurran/Gaia), ~~179~~ 175 bytes
```
⇓“the ”3ṁ“s, and I did not speak out-¶Because I was not a ”2ṃ“.¶¶Then
“ they came for 
First”“Socialist“Trade Unionist“Jew”↓¦⇑“me-and there was no one left to speak for me.”]$
```
[Try it online!](https://tio.run/##LU47DoJAEO05xRSWQqE3sDDRViwtJjDIRtg17BJihzGR2tBi6xFIaLkJXARnlfL93xkFTtNY1WPZmJhgLN/robsz0ktAGcIOQhGCVAb0lfACKjdu324owFwTqwXqn4o2uhq6B0e9vu1bPybpMACuvUGAKUGkMnC2ItOGvSwdVCAwERY2foYhwVEKJf/Engrretb9Z6xeTKTk2kNcl9E8C0oSJBQZMGr@ZzdS8jh6WkzTFw "Gaia – Try It Online")
### Explanation
3 functions are defined here (1 per line). The bottom one is called first. `¶` gets replaced by newlines.
```
⇓“the ”3ṁ“...”2ṃ“.¶¶Then  First helper function. Argument: s
⇓                         Push "Then they came for "
 “the ”                   Push "the "
       3ṁ                 Bring s to the top
         “...”            Push "s, and I did not speak out-¶Because I was not a "
              2ṃ          Push a copy of s
                “.¶¶Then  Push ".¶¶Then"
“ they came for   Helper function. No arguments.
“ they came for   Push " they came for "
First”“..“..“..”↓¦⇑“...”]$  Main function.
First”                      Push "First"
      “..“..“..”            Push the list ["Socialist" "Trade Unionist" "Jew"]
                ↓¦          Call the first helper function on each.
                  ⇑         Push "Then they came for "
                   “...”    Push "me-and there was no one left to speak for me."
                        ]$  Wrap the stack in a list and join with no separator.
```
[Answer]
# [Bubblegum](https://esolangs.org/wiki/Bubblegum), ~~149~~ ~~132~~ 129 bytes
```
00000000: 9d4d b515 0241 14cc af8a c991 1e70 0991  .M...A.......p..
00000010: 02fe bbfd e7b7 cb1a 523d ee0e d9f8 7453  ........R=....tS
00000020: 631d 5cc2 2b84 5432 2265 760c 6315 a654  c.\.+.T2"ev.c..T
00000030: a4d6 d92a 480a 0c20 5201 a91c ec8c 2987  ...*H.. R.....).
00000040: f2ae 1634 3924 6f79 6b2e c8ee 4dba 14eb  ...49$oyk...M...
00000050: 4130 4958 3ed9 9e18 128c a94c 95fc e3e0  A0IX>......L....
00000060: b6fd fa65 c88b 1fa7 7795 e77b 25d7 488a  ...e....w..{%.H.
00000070: 9d68 f898 8792 8c82 2307 a78e bb87 647d  .h......#.....d}
00000080: 03                                       .
```
[Try it online!](https://tio.run/##jZE7i5YxEIV7f8XBS6HCkMskmQgK262gzbrFFja5THZBRQtXEfG3f877fu9i6xRhQsgzZ87p971/1tv7L6eTO@oV6uSJnnyCC@zheQy0JQ2jVrtqcXBbB3pPRBd0rm9Ej84EbwwXlqL3NaGlF4zuG1KIdlWnmHUJCqdojKOuXm/n9w8HIxgjRz@RxggIXRiJo3UhJ5Tsxvaa0HJiYNBHeknX4bH@oEF0fTCiMRrPbONCA4trcCM40@E8WvUDOmQgVCm7jheXRLja1Tx/2IWNsUJT@BwZsQZGXqUi96AYogqevZlH2ncG16dff32yZrPmYCRjsI8OXJMg6qyo6gU@2PRWeaCmZWKiOuDCvb15c7bkHf1jZGP0bHYuW9kGS4dfraCUmszi0hHSLLakxbTp0O3vT6Lfz@jygVH2bLNgSRVIqQEyxDyNrqAV2QIzKzKXaYy7s4gn@zn/HAzZsrXY/qvodPoL "Bubblegum – Try It Online")
Boring Bubblegum answer. Already beaten by SOGL, so that's good.
Credit for -17 bytes goes to [Dom Hastings](https://codegolf.stackexchange.com/users/9365/dom-hastings)
-3 bytes by [ovs](https://codegolf.stackexchange.com/users/64121/ovs)
[Answer]
# SQL 269 bytes
```
declare @ char(18)='They came for the ',@a char(49)='s, and I did not speak out-
Because I was not a '
print'First '+@+'Socialist'+@a+'Socialist.
'+@+'Trade Unionist'+@a+'Trade Unionist.
'+@+'Jew'+@a+'Jew.
'+@+' me-and there was no one left to speak for me.'
```
[Answer]
# PowerShell, 211 202 198 bytes
-13 bytes thanks to @Veskah
```
$a,$b='First',' they came for'
'Socialist','Trade Unionist','Jew'|%{"$a$b the $_`s, and I did not speak out-
Because I was not a $_.
";$a='Then'}
"$a$b me-and there was no one left to speak for me."
```
[Try it online!](https://tio.run/##LY7LDoIwFET3/YobUtMN8AOGjQsT3YprvdBLaCwtaUuIUb@9lsd2zszJjHYm53vSOkaOOW8qcVbOB5ELCD29ocWBoLNOMHGzrUKtVlg7lAR3o6zZgivN4nv4ZBx5syyBP54@BzQSLiCVBGMD@JHwBXYKBTtRi5OnBGf0K8Q0KVl25FiJuicjfmyzDVQsmiR1tLfBGgJNXYBgd2v6mJplFuMf "PowerShell – Try It Online")
I'm sure this can be golfed down a little bit.
[Answer]
# [Proton](https://github.com/alexander-liao/proton), 219 bytes
```
t='they came for'for i:'Socialist','Trade Unionist','Jew'print(i[0]=='S'? 'First':'Then',t,'the',i+'s, and I did not speak out-
Because I was not a',i+'.
')print('Then',t,'me-and there was no one left to speak for me.')
```
[Try it online!](https://tio.run/##RY89C4NADIZ3f0W2VHpKZ0EKHQrtqp1Kh0MjhtaL3EWkv976BR2yvE/yvKT3ouKmSXPUlr5Q2Y6gEY/zAGdYSMX2w0HRYOltTfBwLG4L7jRi79npgZ@nV55jgWfAK/uZZli25NCoWcRo@IjBgHU13KDmGpwohJ7sG2TQJLpQZYdAMxxtWKFdb9II463i7@soWTyz1tO@DuIIPtQoqOza5YGOUoyn6Qc "Proton – Try It Online")
[Answer]
## Python 2, 246 bytes
First time I tried compressing the string an returning it. Aparently it takes more bytes than other approaches. Is there anything left to golf?
```
import zlib,base64
print zlib.decompress(base64.b64decode('eJyd0DEOwjAMBdA9p/gHoD0EAxJdgQNYiatGtDaKU1XcvikUdSkDjLb/f4NPMVlG7vgJTwOj1bRMuKiP1EfLdgBJwBkhBohm2IPpDh1z5Y7saTQux4nsdaStWDt37Vh27JtElT/oT++73PD0K1oq+97A1QKVZeI1DxVGz215mK7uO1nPf1Zu5g=='))
```
[Try it online!](https://tio.run/##JcnNboIwAADg@55iNzUsQhFsPHiAlDBBBCay6Q1s@Yd2UAR5eZbF6/exJ89oI89zXjPa8vepyuOPOOrIVnljbd68ZI3JndasJV23fOU63ir/iMlyQawnlpDhDoXm6FjbMTH9pEgytNHCqX@65hE3OYrsC/i5P/Lygs8lKo6xmCgnzwkrEz5SKxjcAsRfTm/nHjCSI051a9DLTKdZLR88hjIwqVfYRYHfj0rT4ejMvxHfwDCTocWNKhBpIAhw4yHJBvRX2EEN@HZ4IweAxtCcZKDWNuxd0HgJuPVqut8vVqt5/gM)
[Answer]
# [Röda](https://github.com/fergusq/roda), 204 bytes
```
{t="Then"c=" they came for";["First","Socialist",t,"Trade Unionist",t,"Jew"]|[`$_$c the ${_}s, and I did not speak out-
Because I was not a $_2.
`];[`$t$c me-and there was no one left to speak for me.`]}
```
[Try it online!](https://tio.run/##Nc6xDoJADAbgnadoGkZwcCUsDia6qpMh0NyVcFHuzF0JMciz42Fwa/r//VLvNC09GQvTMkmJ144tqhJBOn6Dop6hdR6LOx6ND4IZXpwy9DTrLBlePWmGmzXO/ldnHrH63Ju0TtXKQDrVc8iArIYTaKPBOoHwYnqAGyRPDqxoCBzDkcIvJEjr/S5JmqqIjkSn53y9j5znrQbOMjy5FRC3cfHV2Nw11bzMyxc "Röda – Try It Online")
[Answer]
# PHP, 194 bytes
```
First<?=$t=" they came for ";foreach([Socialist,"Trade Unionist",Jew]as$s)echo"the ${s}s, and I did not speak out-
Because I was not a $s.
Then$t"?>me-and there was no one left to speak for me.
```
[Try it online](http://sandbox.onlinephpfunctions.com/code/cd19f6d7c9331a710412f62c0f13803f4d78e3b6).
[Answer]
# [C (gcc)](https://gcc.gnu.org/), 244 bytes
```
f(c){for(c=0;c<3;printf("%s they came for the %ss, and I did not speak out-\nBecause I was not a %2$s.\n\n",c++?"Then":"First",c^2?c?"Trade Unionist":"Socialist":"Jew"));puts("Then they came for me-and there was no one left to speak for me.");}
```
[Try it online!](https://tio.run/##XY9Pa8MwDMXv@RTCLGDTppT2Vm8Udhhs1223MDCKvJo1crAcyij97Kn751SdpN97Qk/Y/CJOk9dojj4mjS9Li89rO6TA2WtVC@Qd/QO6nqAYLhPUInNw3ME7dKEDjhlkIPcHccxNy6@EbhQq6sHJVXVQr55k0XLLao6z2VZ97YjVRr2FJLmgn9UWC0yuI/jmEDkUvFGfEYPb3/oPOihj7DBm0df1h2A9NZdIBSa6H4bIBHvyGXK8J7w5F8rY01Q@hN4F1qY6VlDKa2Or03QG "C (gcc) – Try It Online")
[Answer]
# [Python 3](https://docs.python.org/3/), 208 bytes
```
print(' they came for '.join(["First"]+[f"the {i}s, and I did not speak out-\nBecause I was not a {i}.\n\nThen"for i in['Socialist','Trade Unionist','Jew']]+['me-and there was no one left to speak for me.']))
```
[Try it online!](https://tio.run/##LY09DoJAEEavMqFZiELjDSxMtBUroNjAEEZhhuwOIcR49hWU9vt5b1y0Ez6FMDpijQ1ohwvUdkBoxYHJnkIcF9GFnNeoOhRttC7gTR9/BMsNXKGhBlgU/Ij2BTJpWvIZazt5XNvZ@l9rt09Wcsl5hxxtcALiwtylJtuTV3M0ubMNwoNJ@B/ccDbVajUDppttdTvcmSCM0GOroLLLN@qAmamSJIQv "Python 3 – Try It Online")
-1 thanks to @Step Hen
[Answer]
# Clojure, 285 bytes
```
(fn[](doseq[i(range 4):let[c["Socialist""Trade Unionist""Jew"""]f #(if(< i 3)% %2)]](println(if(= i 0)"First""Then")"they came for"(str(f(str"the "(c i)"s, ")"me-")(f"and I did not speak out-\n""and there was no one left to speak for me.")(f(str"Because I was not a "(c i)".\n")"")))))
```
This was a fun little challenge. I ended up almost entirely rewriting most of it a couple of times because I realized I was doing something overly roundabout. There are still a couple areas that could probably be touched up, but I'm pretty happy with how it turned out, even if I'm only "compressing" the original by 54 bytes.
[repl.io](https://repl.it/KWof/0)
See the pre-golfed code for an explanation:
```
(defn ftc []
  ; Loop over the lines numbers for reference
  (doseq [i (range 4)
          :let [; Added a dummy last "class" since "me-" wasn't necessary,
                ;  and only having 3 elements was causing OOB errors.
                classes ["Socialist" "Trade Unionist" "Jew" ""]
                
                ; A helper function that executes either its first or second argument
                ;  depending on if the current line is one of the first 3 lines.
                if-first-three-lines #(if (< i 3) % %2)]]
    ; An implicit space is inserted between each of the args to println
    (println
      ; Decide on the opener
      (if (= i 0) "First" "Then")
      "they came for"
      ; Start string concatenation because the implicit space
      ;  begins complicating things.
      (str
        ; Decide which "class" the line belongs to
        (if-first-three-lines
          (str "the " (classes i) "s, ")
          "me-")
        ; Decide on the line ending
        (if-first-three-lines
          "and I did not speak out-\n"
          "and there was no one left to speak for me.")
        ; Then pick the trailer
        (if-first-three-lines
          (str "Because I was not a " (classes i) ".\n")
          "")))))
```
[Answer]
# [Japt](https://github.com/ETHproductions/japt/), ~~153~~ ~~150~~ ~~149~~ 147 bytes
```
`{=` ey ¯´ f `}´-d tre °s no e ¤ft  speak f ´.`i`Sáû\E
TÎè UÍát
Jew`·rÈ+U+`e {Y}s, d I ¹d not speak t-
Be¯«e I °s not a {Y}.
Tn`}`Fir¡
```
[Test it](https://ethproductions.github.io/japt/?v=1.4.5&code=YHs9YCCQZXkgr7QgZo4gYH20LYRkIHSUcmUgsHMgbm8gjWUgpGZ0IJEgc3BlYWsgZo4gtC5gaWBT4ftcRQpUzuggVc3hiXQKSmV3YLdyyCtVK2CQZSB7WX1zLCCEZCBJILlkIG5vdCBzcGVhayCMdC0KQmWvq2UgSSCwcyBub3QgYSB7WX0uCgpUlG5gfWBGaXKh&input=)
1 byte saved thanks to [Oliver](https://codegolf.stackexchange.com/users/61613/oliver)
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), ~~124~~ 119 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
.•RYÁ Wö∍®Ø’áÅÚ)’Òü•'x¡™vy„€Û‚½#NĀè™“ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“©¶y“ƒ« I€¥€–€… ÿ.“.ª¶¶}®19£“€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“J
```
[Try it online.](https://tio.run/##NU47CsJQELxKwEIEDVh6hFhY2IilooWNFgHRQnhKRBub2GgMwov4FysNikpgV3KQvUjcF7WZHWZ3ZqdlVqqNehTpJLxiGftaCX0aT@CMMxJzlDhEJ6WYjU8@SXZAkuW1uySWNDjhgoQDr0ThLXDHOgkXA9bhQeKOe2YkpMLBScPATPMMbc0IbdjGuylIuKgcK8NW2IPPwS6vj5qhYtbfqxg3nMAtXR0O4IPfg3M2BysWlF9mKs2aIqO/DW4KruyLGff9/fo2Qqmy8lH0AQ)
**Explanation:**
```
.•RYÁ Wö∍®Ø’áÅÚ)’Òü•
                  # Push compressed string "socialistxtrade unionistxjew"
 'x¡             '# Split it on "x": ["socialist","trade unionist","jew"]
    ™             # Convert each word to Titlecase: ["Socialist","Trade Unionist","Jew"]
v                 # Loop `y` over each of these strings:
 y                #  Push string `y`
 „€Û‚½            #  Push dictionary string "first then"
      #           #  Split on spaces: ["first","then"]
       N          #  Push the index of the loop
        Ā         #  Truthify it (0 remains 0; every other number becomes 1)
         è        #  Use it to index into the list
          ™       #  Titlecase it
 “ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“
                  #  Push dictionary string "ÿ they came for the ÿs, and I did not speak out-"
                  #  where the "ÿ" are automatically filled with the strings at the top of the stack
  ©               #  Save it in the register (without popping)
 ¶                #  Push a newline "\n"
 y                #  Push string `y` again
 “ƒ« I€¥€–€… ÿ.“  #  Push dictionary string "because I was not a ÿ."
                  #  where the "ÿ" is automatically filled again with the string
  .ª              #  Sentence case it: "because" becomes "Because"
 ¶¶               #  Push two newline characters "\n\n"
}                 # After the loop:
®                 # Push the string from the register:
                  #  "Then they came for the Jews, and I did not speak out-"
 19£              # Only leave the first 19 characters: "Then they came for "
“€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“
                  # Push dictionary string "me-and there was no one left to speak for me."
J                 # Then join everything on the stack together (and output implicitly)
```
[See this 05AB1E tip of mine (sections *How to use the dictionary?* and *How to compress strings not part of the dictionary?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why:
* `.•RYÁ Wö∍®Ø’áÅÚ)’Òü•` is `"socialistxtrade unionistxjew"`
* `„€Û‚½` is `"first then"`
* `“ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“` is `"ÿ they came for the ÿs, and I did not speak out-"`
* `“ƒ« I€¥€–€… ÿ.“` is `"because I was not a ÿ."`
* `“€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“` is `"me-and there was no one left to speak for me."`
[Answer]
# [Text](https://esolangs.org/wiki/Text), 348 bytes
```
First they came for the Socialists, and I did not speak out-
Because I was not a Socialist.
Then they came for the Trade Unionists, and I did not speak out-
Because I was not a Trade Unionist.
Then they came for the Jews, and I did not speak out-
Because I was not a Jew.
Then they came for me-and there was no one left to speak for me.
```
This is the shortest possible version in its language, and is on par with the Befunge-93 answer at time of writing.
]