using System.Collections.Generic;
public static void Main()
var result = new List<List<string>> ();
GetPalindronicPartitions(str,result,new List<string>(),0,str.Length);
foreach(var cur in result){
Console.WriteLine(String.Join(" ", cur.ToArray()));
public static void GetPalindronicPartitions(string str,List<List<string>> result,List<string> cur,int index, int size){
result.Add(new List<string>(cur));
for(int i=index;i<size;i++){
if(isPalindronic(str,index,i)){
cur.Add(str.Substring(index,i-index+1));
GetPalindronicPartitions(str,result,cur,i+1,size);
cur.RemoveAt(cur.Count-1);
public static bool isPalindronic(string str, int start, int end){
if(str[start] != str[end]){