Dynamic URI to load entry template
Completely possible without any extra routing!
First you would need to make sure the relation fields are required to prevent any errors.
For the Country section, you would simply set up your section with the URI format { slug }
For Region you would set up the URI Format to grab the related Country's slug for the first segment, like this: { yourCountryFieldHandle.one().slug }/{ slug }
And for Town it would be { yourRegionFieldHandle.one().yourCountryFieldHandle.one().slug }/{ yourRegionFieldHandle.one().slug }/{ slug } which gets the related Region's Country for the first segment, then the related Region for the second.
You can then specify a different template for each section.