------
## 最终结论
```python
from collections import defaultdict

def sort_on_occurence(lst):
    occurrence_dict = defaultdict(list)
    
    for item in lst:
        occurrence_dict[item[0]].append(item[1])
    
    result = []
    for key, value in occurrence_dict.items():
        result.append((key, *value, len(value)))
    
    return sorted(result, key=lambda x: x[0])

# Test cases
assert sort_on_occurence([(1, 'Jake'), (2, 'Bob'), (1, 'Cara')]) == [(1, 'Jake', 'Cara', 2), (2, 'Bob', 1)]
assert sort_on_occurence([('b', 'ball'), ('a', 'arm'), ('b', 'b'), ('a', 'ant')]) == [('b', 'ball', 'b', 2), ('a', 'arm', 'ant', 2)]
assert sort_on_occurence([(2, 'Mark'), (3, 'Maze'), (2, 'Sara')]) == [(2, 'Mark', 'Sara', 2), (3, 'Maze', 1)]
```