Fondamentalmente l'array in input rappresenta un range di validità.
Il ragionamento è questo.

Il primo elemento mi dice che esiste un range:
2011 a 9999.

Il secondo però ne discrimina uno più ristretto che va dal 2011 al 2016, quindi il range di cui sopra si splitta in 2:
2011 - 2016
2017 - 9999 (errore mio sopra a scrivere 2016)

Il terzo ne discrimina un altro che va dal 2011 al 2013 quindi quello dal 2011 al 2016 si splitta ulteriomente in 2 ed otteniamo:
2011 - 2013
2014 - 2016
2017 - 9999

Il quarto infine non "ha effetto" in quando esiste già il suo stesso range...

Non so se mi sono spiegato, è parecchio contorto in effetti.
Fondamentalmente dato un elenco di range devo ottenere tutti quelli "derivati" sulla base dei vari incroci...