Java Solution
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    public String[] splitMessage(String message, int limit) {\n        int n = message.length();\n        int i = 0;\n        long maxPossible =0;\n        do {\n            i++;\n            long max = (long)Math.pow(10, i);\n            long a = (max - (long)Math.pow(10L, i-1)) * (i-1);\n            long b = (max-1) * (i-1 + 5) ;\n            maxPossible = (limit * (max -1)) - (a + b); \n            if(maxPossible <=0) return new String[0];\n        } while(maxPossible < n);\n\n        List<String> parts = new ArrayList<>();\n        int j =0;\n        int a =1;\n        while(j < n ) {\n            String aString = Integer.toString(a);\n            int countA =  aString.length();\n            int e = Math.min(n , j + limit - i - countA - 3);\n            String s = message.substring(j, e) + "<" + aString + "/";\n            parts.add(s);\n            j = e;\n            a++;\n        }\n        int m = parts.size();\n        String[] res = new String[m];\n        String b = Integer.toString(m);\n        for(int k =0 ; k < m ; k++) {\n            res[k] = parts.get(k) + b + ">";\n        }\n\n        return res;\n\n    }\n}\n```
['Java']