a:6:{i:0;s:18138:"				<div class="h1"><h1>Best of Europe</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.seaqueenholiday.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.seaqueenholiday.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Best of Europe</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						12 Nights / 13 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">London, Paris, Venice, Munich, Amsterdam, Innsbruck, Rome, Pisa, Holland, Switzerland</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.seaqueenholiday.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best of Europe - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="88820"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_8/235469/154368.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_8/235469/154368.jpg"  width="150" height="150"    alt="Best of Europe" title="Best of Europe" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> London
								</p>
								<p class="aj">On arriving in London, the capital of the United Kingdom, meet our tour manager who escorts you to one of our listed hotels. Check-in at the hotel and rest and relax in the cozy comfort of its room. In the night you may take a leisurely walk to explore this amazing city. Enjoy delicious Indian dinner at one of the Indian restaurants. After dinner return to the hotel for a comfortable overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> London – Holland
								</p>
								<p class="aj">Today in the morning after enjoying a buffet breakfast embark for a guided tour of London accompanied by an English speaking guide. The major tourist attractions to be covered in this guided tour are Hyde Park, Westminster Abbey, Trafalgar Square, Tower Bridge, Buckingham Palace, the Big Ben, Houses of Parliament, Piccadilly Circus, River Thames etc. After the visit enjoy a hot Indian meal in the lunch. One of the prime attractions to visit while being in London is the Madame Tussaud’s Wax Museum. The museum is world famous for preserving largest collection waxworks of famous personalities. Later in the day indulge in shopping visiting some of the famous shopping stores like Selfridges, Marks and Spencer’s and many other present on the Oxford Street. After shopping board a ferry to reach Holland. Enjoy dinner and overnight stay on the ferry.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Holland – Amsterdam
								</p>
								<p class="aj">Next day in the morning after enjoying a continental buffet on the ferry, disembark the ferry to board a coach to reach Madurodam to observe most of Holland in miniature showcasing the minutest of details on a 1:25 scale. Also visit the Wooden shoe factory along with the cheese farm. Being at the cheese farm factory see the how cheese is made along with a chance to savor some amount of cheese. Now next we move to Amsterdam. On reaching Amsterdam, first enjoy feasting on delectable hot Indian meal at lunch. Later in the day embark on a visit to the Royal Palace, War Memorial and Niewekerk present at the Dam Square situated in the heart of Amsterdam. Later enjoy a journey to Brussels for visiting the site of legendary Mannekin Pis Statue and the famous Grand Place.  Enjoy a joyride to the beautiful St. Michale’s Church stop midway to visit Antwerp for a photo shoot. In the evening enjoy a hot Indian dinner later being driven back to your hotel for a comfortable overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Paris
								</p>
								<p class="aj">The next day after enjoying a continental buffet breakfast, drive to visit the glamorous city of Paris. The city is known for its fashion houses elegant avenues, art museums and the majestic monuments. On reaching Paris check-in at one of our listed hotels. Rest and relax in the comfortable surroundings of your hotel room. Later move out to explore the beautiful city of Paris. In the afternoon enjoy an Indian lunch. In the evening get ready to attend the impressive Lido Show which is famous for music and dance extravaganza. After enjoying the show, return to the hotel for a comfortable night show.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Paris
								</p>
								<p class="aj">On the 5th day you have the options to choose from. You can either spend the morning at leisure or embark on an action packed day at the Disney Park or Disney Studio, popular attractions of Europe. At the Disney Park enjoy various fun rides and at the Disney studios watch the stunning stunt shows, explore the real live sets where movies are created and even watch a film being made. After lunch enjoy exploring the beautiful Paris being accompanied by an English speaking local guide. The prime tourist attractions to visit in Paris are Arc de Triomphe, the Opera House, Champs Elysees, Alexander Bridge, Concorde Square etc. The next tourist attraction to visit is the famous Eiffel Tower which provides for a splendid aerial view of the beautiful city of Paris followed by a romantic Seine cruise while visit various historical monuments present at the bank of the river Seine. In the evening enjoy an Indian dinner at an Indian restaurant. Overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Switzerland
								</p>
								<p class="aj">Post Continental breakfast, check out from the hotel and sit back and relax in the coach to enjoy a scenic drive to Switzerland. Upon reaching Switzerland, check-in at one of our listed hotels. Rest and relax in the cozy comforts of your hotel room for the day. Enjoy Indian cuisines for lunch. In the evening take a leisurely walk to explore the alluring city of Switzerland. Later return to the hotel for a lavish Indian dinner and a comfortable overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Switzerland
								</p>
								<p class="aj">On the 7th day of the tour may spend the morning at leisure or enjoy an Alpine excursion to the wonderful world of the Jungfraujoch situated at an altitude of 3454 mts. Board the ‘Cogwheel’ train to the reach Jungfraujoch. Enjoy this excursion to the wonderful world of eternal ice and snow. After the visit, sit back in the coach to enjoy a drive to the beautiful town of Lauterbrunnen. Later in the day enjoy a visit to the Ice Palace set at the top of the longest glacier in the Alps. Also enjoy a visit to the Sphinx. At the lunch enjoy hit Indian food being served. Also visit the mesmerizing Interlaken, a beautiful city situated between the two lakes. Later return to the hotel to relax in the cozy comfort of its room. In the evening enjoy sumptuous dinner and retire for the night at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Switzerland
								</p>
								<p class="aj">After enjoying a hearty continental breakfast, set off for a fun and an exciting excursion to Mt. Titlis. Visit this scenery and beautiful mountain along with enjoying the adventurous ride to the snow-clad Swiss Alps in Rotair, the first revolving cable car of the world. Enjoy the scenic beauty while you remain spellbound as you climb the chow clad mountains. Next proceed to visit the enchanting beauty of Lucerne. As you reach Lucerne enjoy Indian cuisine at lunch. While being at the Lucerne enjoy visiting the Kapell Brucke and the Lion Monument.  In the later part of the day you have free time for shopping for some of the exquisite Swiss watches, Souvenirs and beautiful jewelry at Bucherer. In the evening enjoy delicious Indian dinner at the hotel. Enjoy a comfortable overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Pisa
								</p>
								<p class="aj">Today after breakfast, check out from the hotel to board a coach to reach Pisa. Visit the Square of Miracles at Pisa. Another world famous attraction to visit in Pisa is the leaning tower. In the afternoon, savor the delicious Indian cuisines in lunch. After lunch drive straight to Florence, the capital of Tuscany. Upon reaching Florence, check-in at one of the listed hotels. After straightening your backs, head to a guided city tour being accompanied by an English speaking local guide to visit the prime attraction of Florence. The major attractions to visit include Duomo, the Baptistery with its gates to Paradise, the Campanile along with Piazza Michelangelo featuring an impressive statue of David. After enjoying lavish Indian dinner retire for the night at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> Rome
								</p>
								<p class="aj">Post breakfast, sit back in to coach and drive straight to Rome. As you reach Rome, check-in at one of our listed hotels. After resting for a while, move out from the hotel to explore the beautiful city of Rome. Take on a guided tour to Rome being accompanied by an English speaking guide. Also explore Vatican City the smallest city of the world. During the expedition to these cities enjoy exploring the holy basilica of St. Peter’s featuring beautiful artistic and architectural masterpieces by Bernini and Michelangelo. Next head to visit the Colosseum, the place is known for its gladiator fights. The prime attractions to visit in Rome include the Victor Emmanuel monument on Piazza Venezia, the Tomb of the Unknown Soldier, Circus Maximus is known for its chariot races, the ancient ruins of Roman Forum etc. Later in the evening drive back to the hotel to enjoy dinner and overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Venice
									</p>
									<p class="aj">After breakfast, drive to Venice. As you reach Venice walk down to the pier and board a private boat that will take you to St. Mark’s Square, the heart of the traditional city of Venice. Later get accommodated at one of our listed hotels in Venice. This wonderful lagoon city has always left its visitors spellbound. Enjoy sailing over the Guidecca Canal while observing the alluring water of the Adriatic Sea. The prime attractions to visit include the site of the Basilica, Campanile, Doge’s Palace and Bridge of Sighs. Another attraction to visit is Murano Glass Showroom. In the evening after enjoying a delicious Indian dinner move towards your room for a comfortable sound sleep.</p>
									</td>	
									</tr>
									</table>				
									</div>
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 12:</b> Innsbruck
									</p>
									<p class="aj">This morning post breakfast, enjoy a dramatic drive to mesmerizing Austria. On reaching Austria visit the Maria Theresien Strasse and the Golden Roof. You may even enjoy a stroll on the Cobblestone pathways to feel the old world charm of Europe. The majestic Alps in the backdrops make for a perfect photo op with picture postcard featuring Alps in the backdrops. Later in the day leave for Munich, one of the liveliest places of Europe. As you reach Munich, unshoulder your luggage at one of our listed hotels. After relaxing for a while, leave the hotel to visit the major tourist hotspots in Munich including the Olympic Stadium, Old and New Town Hall, Gothic Frauenkirche and the 1,000-foot-high Television Tower. In the evening enjoy a sumptuous dinner along with a comfortable overnight stay at the hotel.</p>
									</td>	
									</tr>
									</table>				
									</div>
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 13:</b> Munich
									</p>
									<p class="aj">In the morning after breakfast, transfer to airport to fly back home marking the end of this splendid journey.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
												</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.seaqueenholiday.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best of Europe - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="88820"/>
						</form>
						</div>
						
						";i:1;s:55:"Book Best of Europe - 12 Nights / 13 Days Tour Packages";i:2;s:180:"book best of europe - 12 nights / 13 days tour packages, heritage tour packages, london, paris, venice, munich, amsterdam, innsbruck, rome, pisa, holland, switzerland tour packages";i:3;s:232:"Book Best of Europe - 12 Nights / 13 Days tour packages from Sea Queen Holidays - Get attractive 12 Nights / 13 Days Heritage  tour packages for  London, Paris, Venice, Munich, Amsterdam, Innsbruck, Rome, Pisa, Holland, Switzerland.";i:4;s:471:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "London, Paris, Venice, Munich, Amsterdam, Innsbruck, Rome, Pisa, Holland, Switzerland"        
		                 },
		      "description": "",
		      "name": "Best of Europe",
		      "telephone": "+91-9833538295"
		    }
		    </script>
			";i:5;N;}