#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <chrono>

// ???????????????????????°????????????????§???????
typedef struct LettersInfo {
    std::string letters; // ??????
    unsigned int count; // ???????????°
} lettersInfo_s;

int main()
{
    /////////////////
    // 1. ??\????????????
    /////////////////
    std::string paramStr;
    std::getline(std::cin, paramStr);

    // ???????¨???¬????§?
    //auto start = std::chrono::system_clock::now();

    // ???????????????????????°?????????
    std::vector<lettersInfo_s*> lettersList;

    // ?????????????????????????´???????
    std::string letters;
    std::istringstream stream(paramStr);

    // ?????????????????¨????????????????£????????´???????
    unsigned int maxLength = 0;
    std::string maxLengthStr;

    ////////////////////////////////////////////////////////////////////////
    // 2. ??????????????????????????????????????????????´¢???????????????????????????????????°???????????????
    ////////////////////////////////////////////////////////////////////////
    while (std::getline(stream, letters, ' ')) {
        unsigned int len = letters.size();
        if ( len != 0) {
            // ????????????????£???¨?????????
            if ( maxLength < len ) {
                // ????????????????£??????\?????????
                maxLengthStr = letters;
                maxLength = len;
            }
            // ?????????????????¢???????????¨??????????????¢???????????§????????°???????????°????¢??????????
            unsigned int loopCount;
            for (loopCount = 0; loopCount < lettersList.size(); loopCount++) {
                if ( lettersList[loopCount]->letters == letters ) {
                    ++lettersList[loopCount]->count;
                    break;
                }
            }
            // ??°?????????????????????????????????????????°??????????????????
            if (loopCount == lettersList.size()) {
                lettersInfo_s* plettersInfo = new lettersInfo_s();
                plettersInfo->letters = letters;
                ++plettersInfo->count;
                lettersList.push_back(plettersInfo);
            }
        }
    }

    ////////////////////////////////////////
    // 3. ???????????????????????°?????????????????????????´¢
    ////////////////////////////////////////
    unsigned int maxCount = lettersList[0]->count;
    std::string maxCountStr = lettersList[0]->letters;
    for (unsigned int i = 1; i < lettersList.size(); i++) {
        unsigned int count = lettersList[i]->count;
        if (maxCount < count) {
            // ????????????????£??????\?????????
            maxCountStr = lettersList[i]->letters;;
            maxCount = count;
        }
    }

    ///////////////////////////////
    // 4. ????????????????????????????????¨???
    ///////////////////////////////
    std::cout << maxCountStr << " " << maxLengthStr << std::endl;

    // ???????¨???¬??????
    //auto end = std::chrono::system_clock::now();
    //auto dur = end - start;

    // ??????????????¨???
    //auto msec = std::chrono::duration_cast<std::chrono::milliseconds>(dur).count();
    //std::cout << msec << "[ms]" << std::endl;

    //std::getline(std::cin, paramStr);

    return 0;
}

Measured memory_bytes: 3084