One of easiest code written by a programming language is a program printing sequence of characters (ex. "Hello, world!"). However, [s](http://www.lscheffer.com/malbolge.shtml)[o](http://esolangs.org/wiki/Asdf)[m](http://esolangs.org/wiki/Polynomial)[e](http://esolangs.org/wiki/Funciton) [e](http://esolangs.org/wiki/Fugue)[s](http://esolangs.org/wiki/DNA-Sharp)[o](http://esolangs.org/wiki/NULL)[t](http://esolangs.org/wiki/Fractran%2B%2B)[e](http://www.bigzaphod.org/whirl/)[r](http://en.wikipedia.org/wiki/Shakespeare_(programming_language))[i](http://www.dangermouse.net/esoteric/piet.html)[c](http://compsoc.dur.ac.uk/whitespace/) programming languages like [Brainfuck](http://en.wikipedia.org/wiki/Brainfuck), even this simplest code is quite annoying to write.

Your task is to write a program (don't have to written in brainfuck), which prints a (minimum-length) Brainfuck program printing the given text.

Input
-
A sequence of characters (between `1` and `255`) is given by any format (variable, argument, stdin, file, ...).

Output
-
Output is a valid (no non-matching `[` and `]`) brainfuck code (assume unsigned 8-bit wrapping cell and unlimited number of cells to left and right) printing exact string that was given as input.

For example, one possible output for input `A` is `++++++++[<++++++++>-]<+.`.

Your program shouldn't take long time (`>2m`) to run.

The BF program shouldn't take long time (`>10s`) to run.

Scoring
-
The length of program (generating BF code) itself *doesn't* matter. However, hard-coding BF codes in the program code is not OK. Only acceptable range (ex. a BF code printing a single character `0x01` : `+.`) of BF codes might be hard-coded.

The score is sum of length of BF codes printing these strings.

* A string `Hello, world!` appended with a single `0x0A` (`\n`) (i.e. the "Hello, world!" program)
* Single character from `0x01` ~ `0xFF`
 * Sum of length of these 255 BF codes are multiplied by `1/16`, rounded, and added to the score. 
* List of first 16 strings, generated by splitting [a random sequence of bytes generated on 11-11-11](http://www.random.org/files/) by `0x00`, removing all zero-length strings. 
* [Lenna.png](http://en.wikipedia.org/wiki/File:Lenna.png), removing all `0x00`s.
* Lyrics of the song [99 bottles of beer](http://99-bottles-of-beer.net/lyrics.html), starting with `99 bottles~`, newlines are `0x0A`, paragraphs are separated by two `0x0A`s, and no newline character at the end.
* Other strings you may provide.

Your program may include calculating the score of itself.

Of-course, lowest-score code will be the winner.