#include <iostream>
using namespace std;

int dictionaryContains(string word)
{
    string dictionary[] = {"i", "like", "go", "hired", "gohired", "site", "sweet","fruit", "man", "go", "mango"};
    int size = sizeof(dictionary)/sizeof(dictionary[0]);
    for (int i = 0; i < size; i++)
        if (dictionary[i].compare(word) == 0)
           return true;
    return false;
}
bool wordBreak(string str)
{
    int size = str.size();
 
    // Base case
    if (size == 0)  return true;
 
    // Try all prefixes of lengths from 1 to size
    for (int i=1; i<=size; i++)
    {
    	cout << str.substr(0, i) <<"-" <<str.substr(i, size-i)<<"\n";
        if (dictionaryContains( str.substr(0, i) ) &&
            wordBreak( str.substr(i, size-i) ))
            return true;
    }

    return false;
}
 
// Driver program to test above functions
int main()
{
    wordBreak("ilikemango")? cout <<"Yes\n": cout << "No\n";
   // wordBreak("iiiiiiii")? cout <<"Yes\n": cout << "No\n";
    //wordBreak("")? cout <<"Yes\n": cout << "No\n";
   // wordBreak("ilikelikeimangoiii")? cout <<"Yes\n": cout << "No\n";
   // wordBreak("samsungandmango")? cout <<"Yes\n": cout << "No\n";
   // wordBreak("samsungandmangok")? cout <<"Yes\n": cout << "No\n";
    return 0;
}