import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return string字符串ArrayList
     */
    ArrayList<String> res = new ArrayList();
    public ArrayList<String> restoreIpAddresses (String s) {
       backtracking(s,0,new ArrayList<Integer>(),0);
        return res;
    }
    public  void backtracking(String s,int index,ArrayList<Integer> list,int time){
        if(time>3){
        return;
        }
        if(list.size()==3){
            String a = s.substring(0,list.get(0));
            String b = s.substring(list.get(0),list.get(1));
            String c = s.substring(list.get(1),list.get(2));
            String d = s.substring(list.get(2));
            if(d.equals("")||(d.charAt(0)=='0'&&(Integer.parseInt(d)!=0||d.length()>1)))
                return;
            if(Integer.parseInt(d)<=255)
                res.add(a+"."+b+"."+c+"."+d);
        }
                for(int j = 1;j<=3;j++){
                    if(index+j>s.length())
                        break;
                    String str2 = s.substring(index,index+j);
                    boolean b = true;
                    if(str2.charAt(0)=='0'&&(Integer.parseInt(str2)!=0||str2.length()>1))
                        b = false;
                    if(b&&Integer.parseInt(str2)<=255)
                    {
                        list.add(index+j);
                        backtracking(s,j+index,list,time+1);
                        list.remove(list.size()-1);
                     }    
            } 
    }
}