Instead of asking what is best for search engines, ask what is best for users. Search engines typically only "like" certain URLs because users find them easy to use and easy to link to. The best URLs are:
- Descriptive (so users know what they will get when they encounter the URL)
- Memorable (so users can share them easily and come back to them easily)
- Short (so they can be typed easily)
You probably don't want capital letters in your URLs. It makes choosing the correct "canonical" URL easier if the rule for doing so is "make it lower case". See Should my URLs be lowercase?
In my opinion the .html just makes the URL needlessly complex. See Why are extensions often hidden on URLs?
Having a hash sign in your URL can make your site harder to crawl and index for Googlebot, so you probably don't want that option. You can make hash sign URLs crawlable with crawlable AJAX, but it is a pain to implement.
For SEO you don't want to use underscores in URLs. Choose dashes or slashes instead. See URLs: Should I use hyphens, underscores or plus symbols?
If it were my site, I would choose one of the following two URL structures:
- City directory
/london
/london/gallery
/london/history
- All top level pages -
/london
/london-gallery
/london-history
The first makes it clear that you have a "main" page about the city and users that understand how directory structures work would be able to muck with the URL. I might choose the second option if you didn't have a page to designate as the main one.