The thousand character classic Background

The Thousand Character Classic is a chinese poem written around the 4th Century CE in China, and memorized by large populations since then. The name comes from not only its length, but its number of characters: each character occurs only once in the text. It is commonly used to teach children chinese characters, and also, because of its commonness, as a means of enumerating the 1000 characters in the text. 

The challenge

Here is a copy of the Thousand Character Classic, gotten from Wikipedia. 

The Thousand Character Classic

Reproduce the entirety of the Thousand Character Classic in either UTF-8 or UTF-16, including punctuation, newlines, and heading numbers. Punctuation can be halfwidth or fullwidth, and the trailing newline is optional. 

For those that want to analyze the unicode text for patterns, I've provided hexdumps of both encodings. 

utf-8

utf-16

Rules

Because of the size of the text to reproduce, you may optionally supply a file for your submission to use as input. If this is done, add the byte length of the input file to the byte length of your code. 

Otherwise, this is a standard issue code golf challenge, so standard loopholes apply, and shortest submission wins.
C, 50 + 3008 = 3058 bytes

I've tried out several simple compression methods, and found that outputting the UTF-16 input (trailing newline removed) directly is the best way. Input from stdin.

int b[999];main(){read(0,b,3008);write(1,b,3008);}


Python 3, 62 + 2145 = 2207 bytes

Evil built-in. Input filename is A, which is an xz-compressed file of UTF-16 version. 

import lzma
print(lzma.open('A','rt',encoding='utf16').read())


Compressor code:

import lzma
open('A','wb').write(lzma.compress(open('utf16_file.txt','rb').read(),lzma.FORMAT_ALONE))