Below is the list of tables from the database along with their columns and datatype. Need to generate an accurate SQL query for the question.
Only use the columns present in the respective table. Only use the columns which are required to generate the SQL query. Only use table joins if required and not otherwise.

### Tables ###
TABLE: CREATE TABLE table_name_29 ( rank INTEGER, source VARCHAR, year VARCHAR )

### Question ###
What is the average rank that has cia world factbook as the source and a year prior to 2005?

### Accurate SQL ###

SELECT AVG(rank) FROM table_name_29 WHERE source = "cia world factbook" AND year < 2005