A format for expressing an ordered list of integers is to use a comma separated list of either

 individual integers
 Or a range of integers denoted by the starting integer separated from the end integer in the range by a dash, '-'. (The range includes all integers in the interval including both endpoints)
 The range syntax is to be used only for, and for every range that expands to more than two values.
Example

The list of integers:

 -6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20
Is accurately expressed by the range expression:

 -6,-3-1,3-5,7-11,14,15,17-20
(And vice-versa).

Task

 Create a function that takes a list of integers in increasing order and returns a correctly formatted string in the range format. 
 Use the function to compute and print the range formatted version of the following ordered list of integers. (The correct answer is: 0-2,4,6-8,11,12,14-25,27-33,35-39).


    0,  1,  2,  4,  6,  7,  8, 11, 12, 14,
   15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
   25, 27, 28, 29, 30, 31, 32, 33, 35, 36,
   37, 38, 39

 Show the output of your program.


Related task

   Range expansion


siInput As New Short[]
siInput1 As Short[] = [0, 1, 2, 4, 6, 7, 8, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39]
siInput2 As Short[] = [-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20] 
sOutput As New String[]
siCount As Short
siNum As Short
'__________________
Public Sub Main()
Dim siLoop As Short
 
For siLoop = 0 To 1
  If siLoop = 0 Then siInput = siInput1.Copy() Else siInput = siInput2.Copy()
  siCount = 0
  siNum = 0
    Repeat
      If siInput[siCount + 1] = siInput[siCount] + 1 Then
        Inc siCount
      Else
        GetOutput
      Endif
    Until siCount = siInput.Max
 
  GetOutput
  Print sOutput.join(", ")
  sOutput.clear
Next
 
End
'__________________
Public Sub GetOutput()
 
If siNum = siCount Then 
  sOutput.add(siInput[siNum])
  Inc siCount
  siNum = siCount
End If
 
If siNum <> siCount Then
  If siNum = siCount - 1 Then
    sOutput.add(siInput[siNum])
    sOutput.add(siInput[siNum + 1])
    siCount += 2
    siNum += 2
    Return
  End If
  sOutput.Add(siInput[siNum] & "-" & siInput[siCount])
  Inc siCount
  siNum = siCount
End If
 
End