#include <stdexcept>
#include <string>
using namespace std;

class Date {
public:
    class bad_date : public invalid_argument {
        bad_date(const string& s) : invalid_argument(s) {}
    };

    Date() {
        // default constructor implementation
    }

    Date(int year, int month, int day)
      throw(bad_date) {
        // constructor implementation
    }

    // rest of interface

private:
    // internal representation
};
