private ArrayList<String> recBreak(String s, Set<String> dict){
        if(map.contains(s))
            return null;
        ArrayList<String> list = new ArrayList<String>();
        ArrayList<String> temp = null;
        for(int i =1; i<= s.length(); i++){
            temp = new ArrayList<String>();
            String str = s.substring(0, i);
            if(dict.contains(str)){
                if(i < s.length())
                    temp = recBreak(s.substring(i, s.length()), dict);
                if(temp != null){
                    if(temp.size() == 0)
                        list.add(str);
                    else{
                        for(int j = 0; j< temp.size(); j++){
                            list.add(str+" "+temp.get(j));
                        }
                    }
                }else{
                    map.add(s.substring(i, s.length()));
                }
            }
        }

        return (list.size() > 0)?list:null;

    }