typedef struct NMUStudent
{
char Name[60];
char DOB[8];
int GradYear;
void (*WorkatJob)(void);
void (*Study)(void);
void (*Speak)(void);
} NMUStudent;
typedef struct MathMajor
{
NMUStudent *a;
char Discipline[60];
char Name[60];
char DOB[8];
int GradYear;
void (*WorkatJob)(void);
void (*Study)(void);
void (*Speak)(void);
} MathMajor;
typedef struct CSMajor
{
NMUStudent *a;
int YearsOfExperience;
char Name[60];
char DOB[8];
int GradYear;
void (*WorkatJob)(void);
void (*Study)(void);
void (*Speak)(void);
} CSMajor;
typedef struct Genius
{
NMUStudent *a1;
char Discipline[60];
NMUStudent *a2;
int YearsOfExperience;
int Salary;
char Name[60];
char DOB[8];
int GradYear;
void (*WorkatJob)(void);
void (*Study)(void);
void (*Speak)(void);
} Genius;
void newNMUStudent(NMUStudent *p);
void NMUStudentWorkatJob(void);
void NMUStudentStudy(void);
void NMUStudentSpeak(void);
void newMathMajor(MathMajor *p);
/*void MathMajorWorkatJob(void);*/
void MathMajorStudy(void);
void MathMajorSpeak(void);
void newCSMajor(CSMajor *p);
void CSMajorWorkatJob(void);
/*void CSMajorStudy(void);*/
void CSMajorSpeak(void);
void newGenius(Genius *p);
/*void GeniusWorkatJob(void);*/
/*void GeniusStudy(void);*/
void GeniusSpeak(void);
NMUStudent * MathMajor2NMUStudentPtr (MathMajor *p);
NMUStudent * CSMajor2NMUStudentPtr (CSMajor *p);
NMUStudent * Genius2NMUStudentPtr (Genius *p);
MathMajor * Genius2MathMajorPtr (Genius *p);
CSMajor * Genius2CSMajorPtr (Genius *p);
void NMUStudent2NMUStudent(NMUStudent *l, NMUStudent *m);
void MathMajor2NMUStudent(NMUStudent *l, MathMajor *m);
void MathMajor2MathMajor(MathMajor *l, MathMajor *m);
void CSMajor2NMUStudent(NMUStudent *l, CSMajor *m);
void CSMajor2CSMajor(CSMajor *l, CSMajor *m);
void Genius2NMUStudent(NMUStudent *l, Genius *m);
void Genius2MathMajor(MathMajor *l, Genius *m);
void Genius2CSMajor(CSMajor *l, Genius *m);
void Genius2Genius(Genius *l, Genius *m);