### Database Schema:
CREATE TABLE taughtBy (
	course_id	INTEGER	NULL	PRIMARY KEY,
	p_id	INTEGER	NULL	PRIMARY KEY,
	foreign key (course_id) references course (course_id),
	foreign key (p_id) references person (p_id)
);

CREATE TABLE course (
	course_id	INTEGER	NULL	PRIMARY KEY,
	courseLevel	TEXT	NULL
);

CREATE TABLE person (
	p_id	INTEGER	NULL	PRIMARY KEY,
	professor	INTEGER	NULL,
	student	INTEGER	NULL,
	hasPosition	TEXT	NULL,
	inPhase	TEXT	NULL,
	yearsInProgram	TEXT	NULL
);

CREATE TABLE advisedBy (
	p_id	INTEGER	NULL	PRIMARY KEY,
	p_id_dummy	INTEGER	NULL	PRIMARY KEY,
	foreign key (p_id) references person (p_id),
	foreign key (p_id_dummy) references person (p_id)
);

### User's Query:
Please list the IDs of the top 3 professors that teaches the most courses.

### Extra Knowledge:
IDs of the professors refers to taughtBy.p_id and professor = 1; teaches the most courses refers to max(count(course_id))
SELECT T1.p_id FROM taughtBy AS T1 INNER JOIN person AS T2 ON T1.p_id = T2.p_id WHERE T2.professor = 1 GROUP BY T1.p_id ORDER BY COUNT(*) DESC LIMIT 3