#[Pyth], 31 bytes

    LhM_BSb_#m*[email protected]}MyMd2{MyMK./

**[Try it here!](https://pyth.herokuapp.com/?code=LhM_BSb_%23m%2a%21s%40M.cK%7DMyMd2%7BMyMK.%2F&input=%5B3%2C+1%2C+2%2C+5%2C+4%2C+7%2C+6%5D&debug=0)**

[Pyth]: https://github.com/isaacg1/pyth

Still not particularly happy with this, but it works.

###Explanation

<pre>
LhM_BSb_#m*[email protected]}MyMd2{MyMK./  | Full program.

L                                | Define a function y, which takes an argument b.
     Sb                          | Sort b.
   _B                            | Bifurcate with reverse (returns [B, reverse(B)].
 hM                              | Take the heads (first elements).
         m                   ./  | Map over partitions.
                    yMd          | Apply y to each in d.
                  }M             | Rangify each.
                 K               | Assign to a variable K.
               .c      2         | Two-element combinations.
             @M                  | Map and reduce each by their intersection.
           !s                    | Flatten and (logically) negate.
          *                      | If the above is truthy, then:
                          yMK    | Apply y to each in K.
                        {M       | And deduplicate each. Otherwise, it returns [].
      _#                         | Filter by reverse (used to discard empty lists).
</pre>