# [Jelly], <s>&nbsp;187&nbsp;</s> 166 [bytes]

    ḣ9;⁾| ṁ5¤oµ€“µ½¿‘¦
    “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ṃ@“Ė⁸ġṾṗ¢œƝṇRK⁹ṄẸŒÐ¤ɓḂı)ḥṆqƓị¹÷ḄƝṁPʠVW1JĊTc;[¤ÆWŒṠṬ#ʋÆ6ẉ⁷ZḷƊḤƑẹẠGḊ|qi×Ƭ®ÐėƁ1(⁸ṪU¹Bgoƭ<Gḋ×c:ȦṚƇĊ¬e*⁽%ḷİ°U’Fs27ǹ⁸?x€15¦€19Y

A full program.

[**Try it online!**][TIO-j46zy1ru]

### How?

103 bytes are a 101 digit base 250 number, which is a base-8 compression of a possible cube, with trailing spaces added to equalise the row-lengths, without new lines, and without 18 characters from the middle of each row, like this, but without newlines: 

             _________________ 
            / _____________  /|
           / / ___________/ / |
          / / /| |       / /  |
         / / / | |      / /   |
        / / /| | |     / / /| |
       / / / | | |    / / / | |
      / / /  | | |   / / /| | |
     / /_/___|_|_|__/ / / | | |
    /________________/ /  | | |
    | ______________ | |  | | |
    | | |    | | |_| | |__| | |
    | | |    | |___| | |____| |
    | | |   / / ___| | |_  / / 
    | | |  / / /   | | |/ / /  
    | | | / / /    | | | / /   
    | | |/ / /     | | |/ /    
    | | | / /      | |   /     
    | | |/_/_______| |  /      
    | |____________| | /       
    |________________|/        

The 8 base-8 digits represent the strings of characters:    

    1      2    3    4    5    6        7        0
    "   ", "_", "/", " ", "|", "/ / /", "| | |", "_____"

So the compression is then like the below where `1`s, `6`s, `7`s and `0`s are to be replaced by the strings shown above:

    111000__111/ 00___  /|11 / / 00_/ / |116| |11 / /  |1  6 | |11/ /1|1 671  6| |16 71 6 | |  6  7167 6___|_|_|__6 7/000_/ /  7| 00____ | |  771 7_7__771 | |___7____| |71/ / ___7_  / / 7  6176  7 61 7 / /1761  7/ /1 7 / /11| |1/1  7/_/0__| |  /11| |00__| | /11 |000_|/11  

The program reverses the process and changes the characters that need changing if the cube should be an impossible one:
    
    “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ṃ@“ ... ’Fs27ǹ⁸?x€15¦€19Y  Main link: V
                                                         ...splitting this up...
                                                         ...Main link part 1:
    “ _/ |/|”;€⁶;”_ṁ"“¡ẇḞ6’D¤ - make the list of strings of characters
    “ _/ |/|”                 - list of characters = " _/ |/|"
               ⁶              - literal space character
             ;€               - concatenate €ach -> ["  ","_ ","/ ","  ","| ","/ ","| "]
                 ”_           - literal = '_'
                ;             - concatenate -> ["  ","_ ","/ ","  ","| ","/ ","| ", '_']
                            ¤ - nilad followed by link(s) as a nilad:
                     “¡ẇḞ6’   -   base 250 literal = 31111555
                           D  -   convert to decimal list -> [3,1,1,1,1,5,5,5]
                    "         - zip with:
                   ṁ          -   mould like
                              -   -> ["   ","_","/"," ","|","/ / /","| | |","_____"]
    
                                                         ...Main link, part 2:
    ...ṃ@“ ... ’Fs27 - make the rows of a possible cube without the middle repetitions:
    ...              - part 1, above
         “ ... ’     - the 101 digit base 250 number
       ṃ@            - base decompression with swapped @rguments
                F    - flatten (because the digit values we are using are actually lists)
                 s27 - split into chunks of length 27 (into the rows)
    
                                                         ...Main link part 3:
    ...ǹ⁸?x€15¦€19Y - make "impossible" if need be, add the row middles and output
    ...              - part 2, above
           ?         -  if:
          ⁸          -    chain's left argument = V
       Ç             - ...then: call last link (1) as a monad
                     -          (make it an impossible cube - see link 1, below)
        ¹            - ...else: identity (do nothing)
                €    - for €ach
             ¦       - apply sparsely:
           15        - ...to index: 15
         x€    19    - ...this: repeat €ach nineteen times
                   Y - join with newlines
                     - implicit print
    
    ḣ9;⁾| ṁ5¤oµ€“µ½¿‘¦  Link 1, replace characters to make impossible: rows
                     ¦  apply sparsely:
                “µ½¿‘   ...to indexes: code-page indexes = [9,10,11]
                        ...this:
              µ€          for €ach:
    ḣ9                      head to index 9
            ¤               nilad followed by link(s) as a nilad:
       ⁾|                     list of characters = ['|',' ']
          ṁ5                  mould like 5 = ['|',' ','|',' ','|']
      ;                     concatenate
             o              logical or (vectorises) with the row
                              (which has the effect of appending the rest of the row)


[Jelly]: https://github.com/DennisMitchell/jelly
[bytes]: https://github.com/DennisMitchell/jelly/wiki/Code-page
[TIO-j46zy1ru]: https://tio.run/##FY/PSgJRFMb3PYUUQbUxAw2boIgoqE1EJdXChUgUgkibglnMNXFo3JhCU5GhNbkIC1uY90xocO44lG9x7otMd1bn3/f7ON9ZNpe7DALiL0lNsqEeIWBxdPLYk8WONB6xhwP8kcYdtifUGElHI3pUl0ZDC@/sS1NtWjGTobZFrkn8KSGN@3V0CK5W1da7lYx7LYIhgY3Po7rfIDB3tyUDghK5fFQTVXT@6sSL3ucs8VeCcsGv03cFQfSJl0KA7YybB6nYlmftZbRjdEQ5NaoRNAk6U@OKKCfIvZasf0S871vEHf@GXCC3uUnc0gunwvY7@CGqnu2z2Ix6iOBtH2HtJO@/LytNRdiZpd82wYNvehZ2snOSDaaVmdfF7r7Ks3G@sChMBIWuXKjosTi2w5I8DIJg/h8 "Jelly – Try It Online"