#include <iostream>
#include <stdlib.h>

namespace _ITP_1_2_A
{
/**
* @brief 大小関係を管理する
*/
class RelationshipBase
{
public:
    /**
    * @brief デストラクタ
    */
    virtual ~RelationshipBase() {}

public:
    /**
    * @fn void printAnswer(int a, int b)
    * @brief 大小関係を出力する
    * @param[in] a 比較対象
    * @param[in] b 比較対象
    */
    virtual void printAnswer() = 0;
};

class RelationshipGreaterThan final : virtual public RelationshipBase
{
public:
    /**
    * @brief デストラクタ
    */
    ~RelationshipGreaterThan() {}

public:
    /**
    * @fn void printAnswer(int a, int b)
    * @brief 大小関係を出力する
    * @param[in] a 比較対象
    * @param[in] b 比較対象
    */
    void printAnswer();
};

class RelationshipLessThan final : virtual public RelationshipBase
{
public:
    /**
    * @brief デストラクタ
    */
    ~RelationshipLessThan() {}

public:
    /**
    * @fn void printAnswer(int a, int b)
    * @brief 大小関係を出力する
    * @param[in] a 比較対象
    * @param[in] b 比較対象
    */
    void printAnswer();
};

class RelationshipEqual final : virtual public RelationshipBase
{
public:
    /**
    * @brief デストラクタ
    */
    ~RelationshipEqual() {}

public:
    /**
    * @fn void printAnswer(int a, int b)
    * @brief 大小関係を出力する
    * @param[in] a 比較対象
    * @param[in] b 比較対象
    */
    void printAnswer();
};

class ITP1_2_A
{
private:
    RelationshipBase* relationship;

public:
    /**
    * @brief コンストラクタ
    */
    ITP1_2_A() : relationship(NULL) {}

    /**
    * @brief デストラクタ
    */
    ~ITP1_2_A() { delete relationship; }

public:
    /**
    * @fn bool execute();
    * @brief ２つの整数を読み込み、その大小関係を出力する
    * @return bool 入力範囲内ならtrueを、そうでなければfalseを返す
    */
    bool execute();

private:
    /**
    * @fn void read()
    * @brief 標準入力から読み込む
    * @param[out] a 入力データ
    * @param[out] b 入力データ
    */
    void read(int& a, int& b);

    /**
    * @fn bool check(int a, int b)
    * @brief 入力範囲チェックを行う
    * @param[in] a 入力データ
    * @param[in] b 入力データ
    * @return bool 入力範囲内ならtrueを、そうでなければfalseを返す
    */
    bool check(int a, int b);

    /**
    * @fn RelationshipBase* createRelationship(int a, int b)
    * @brief 比較オブジェクトを生成する
    * @param[in] a 比較対象
    * @param[in] b 比較対象
    */
    RelationshipBase* createRelationship(int a, int b);
};
}

using namespace _ITP_1_2_A;

bool ITP1_2_A::execute()
{
    int in_a = 0, in_b = 0;

    read(in_a, in_b);

    if (!check(in_a, in_b))
        return false;

    relationship = createRelationship(in_a, in_b);

    relationship->printAnswer();

    return true;
}

void ITP1_2_A::read(int& a, int& b)
{
    std::cin >> a >> b;

    //scanf("%d %d", &a, &b);
}

bool ITP1_2_A::check(int a, int b)
{
    if (-1000 > a || 1000 < a ||
        -1000 > b || 1000 < b)
        return false;

    return true;
}

RelationshipBase* ITP1_2_A::createRelationship(int a, int b)
{
    int diff = a - b;

    if (0 == diff)
        return new RelationshipEqual;
    else if (0 < diff)
        return new RelationshipGreaterThan;

    return new RelationshipLessThan;
}

void RelationshipGreaterThan::printAnswer()
{
    std::cout << "a > b" << std::endl;
    //printf("%s\n", "a > b");
}

void RelationshipLessThan::printAnswer()
{
    std::cout << "a < b" << std::endl;
    //printf("%s\n", "a < b");
}

void RelationshipEqual::printAnswer()
{
    std::cout << "a == b" << std::endl;
    //printf("%s\n", "a == b");
}

/**
* @fn int main()
* @brief エントリーポイント
*/
int main()
{
    if (!ITP1_2_A().execute())
        return 1;

}



Measured memory_bytes: 3064