Python3 beats 100%
Approach\n1. reduce limit for 3 chars () and calculate number of parts based on it to get initial number of parts\n2. calculate how many digits we will need for
# Approach\n1. reduce limit for 3 chars (</>) and calculate number of parts based on it to get initial number of parts\n2. calculate how many digits we will need for total number of parts X in the message (<Y/X>) and adjust limit based on that\n3. calculate how many more spaces we will need for Y (<Y/X>)\n4. if total spaces needed is larger than what we can send with current value of parts, we increase parts and re-adjust limit if needed\n5. check again if number of parts will provide enough space for Y\n6. otherwise we have number of parts and starting limit\n\n# Code\n```python3 []\nclass Solution:\n    def splitMessage(self, message: str, limit: int) -> List[str]:\n        if limit <= 5:\n            return []\n            \n        n = len(message)\n\n        if n == 0:\n            return []\n\n        og_limit = limit\n        limit -= 3 # </>\n        parts = n // limit\n        parts += 1 if (n % limit) > 0 else 0\n\n        d = 1\n        while parts >= d:\n            limit -= 1\n            parts = n // limit\n            parts += 1 if (n % limit) > 0 else 0\n            d *= 10\n\n        while True:\n\n            d = 1\n            more_spaces_needed = 0\n            while parts >= d:\n                more_spaces_needed += parts - d + 1\n                d *= 10\n\n            total_needed = n + more_spaces_needed + parts * (og_limit - limit)\n            total_space = parts * og_limit\n            if total_space >= total_needed:\n                break\n            else:\n                prev_parts = parts\n                parts_to_add = (total_needed - total_space) // limit\n                parts += parts_to_add if parts_to_add > 0 else 1\n                print(prev_parts, parts)\n                if len(str(parts)) > len(str(prev_parts)):\n                    limit -= 1\n                    if limit == 0:\n                        return []\n                    potential_new_parts = n // limit\n                    potential_new_parts += 1 if (n % limit) > 0 else 0\n                    if potential_new_parts > parts:\n                        parts = potential_new_parts\n        \n        lst = []\n        i = 0\n        part_cnt = 1\n        parts_str = str(parts)\n        d = 1\n        while i < n:\n            if part_cnt >= d:\n                limit -= 1\n                d *= 10\n            msg_part = message[i:(i + limit)]\n            lst.append(msg_part + "<" + str(part_cnt) + "/" + parts_str + ">")\n            part_cnt += 1\n            i += limit\n        return lst\n\n\n        \n```
['Python3']