## stats = {'r0': None, 'r1': None, 'data'}
merge_range = lambda a,b: str(a) if a==b else '%d-%d'%(a,b)
def fold(num_seq):
prev = num_seq[0]
num_seq = num_seq[1:]
data = [prev]
for n in num_seq:
##print prev, n, data[-1]
if n - prev > 1:
# break the reducing
data[-1] = merge_range(data[-1], prev)
data.append(n) ## append the range start
prev = n ## update the prev number
return data
samples = [1, 2, 3, 5, 6, 7, 9, 11, 13, 14, 15, 21]
print fold(samples)