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

Expand the range description:

  -6,-3--1,3-5,7-11,14,15,17-20 

Note that the second element above,
is the range from minus 3 to minus 1. 



Related task

   Range extraction


$ include "seed7_05.s7i";
  include "scanstri.s7i";
 
const func array integer: rangeExpansion (in var string: rangeStri) is func
  result
    var array integer: numbers is 0 times 0;
  local
    var integer: number is 0;
  begin
    while rangeStri <> "" do
      number := integer parse getInteger(rangeStri);
      numbers &:= number;
      if startsWith(rangeStri, "-") then
        rangeStri := rangeStri[2 ..];
        for number range succ(number) to integer parse getInteger(rangeStri) do
          numbers &:= number;
        end for;
      end if;
      if startsWith(rangeStri, ",") then
        rangeStri := rangeStri[2 ..];
      elsif rangeStri <> "" then
        raise RANGE_ERROR;
      end if;
    end while;
  end func;
 
const proc: main is func
  local
    var integer: number is 0;
  begin
    for number range rangeExpansion("-6,-3--1,3-5,7-11,14,15,17-20") do
      write(number <& " ");
    end for;
    writeln;
  end func;