What's the shortest contiguous subset of ASCII you need to output the rest? The printable ASCII characters (hex codes 20 to 7E) in order are:
 !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(Note that space is in there.)
This string clearly contains all the printable ASCII characters at least once in increasing order when read from left to to right, but not in decreasing order.
The string
REVERSED:~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?&gt;=&lt;;:9876543210/.-,+*)('&amp;%$#&quot;! NORMAL: !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

contains all the printable ASCII characters at least once both in increasing and decreasing order. In other words, when the characters are valued with their numeric code, the longest increasing and longest decreasing subsequences have length 95 (the number of printable ASCII characters).
Challenge
Choose a contiguous subset of N printable ASCII characters, such as LMNOP (N = 5). Write a program using only those N characters whose output contains all 95 ASCII characters in increasing and decreasing order like the example above.
The winner is the submission with the lowest N. In case of ties the shortest code in bytes wins.
Notes

A contiguous subset means a set of the printable ASCIIs that all appear in an unbroken line, such as LMNOP or 89:;&lt;=&gt;.
Your contiguous subset may &quot;loop around&quot; from ~ to space, but this incurs a +3 penalty on N. So {|}~ has N = 4, but {|}~ ! has N = 6 + 3 = 9.
Your program may only contain the N printable ASCII characters from the contiguous subset you've selected. They do not all have to appear and may appear multiple times in any order. (All non-printable ASCII and all non-ASCII is not allowed. This means tabs and newlines are not allowed.)
Your output may only contain printable ASCII characters and must be less than 10000 characters long.
Your output's longest increasing and decreasing subsequences must both have length 95 (as explained above).
Output to stdout. There is no input.
N is a positive integer less than 96.
Unary, N=1

4132527913354820031118363262102424570092493175835499123283719 (4.1325279e+60) bytes

Source code in unary is obviously too large to post here. It can be easily reproduced by typing out (or generating) a file filled with "0"s of the same length as the number of bytes above.

Here is the binary representation:

1010010010010110011000010010010010010010010010001111000000010010010010010110011000010010010010010010010010010010010010010010010010010010010001111000110011001010001100010000000111001110011001011100000111


And the equivalent Brainf**k code (linebreaks for clarity):

++++[-&gt;++++++++&lt;]&gt;&gt;
+++++[-&gt;+++++++++++++++++++&lt;]&gt;
[-&lt;+&lt;.+&gt;&gt;]&lt;
[-&lt;-.&gt;]


Output:

 !"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?&gt;=&lt;;:9876543210/.-,+*)('&amp;%$#"! 


EDIT: Golfed out 9.097887e+87 unnecessary characters.