a:6:{i:0;s:17897:"				<div class="h1"><h1>Highlights of Europe Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travvelextent.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travvelextent.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Highlights of Europe Package</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">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Paris, Florence, Innsbruck, Rome, Pisa, Zurich, Lucerne, Padova, Beaune</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.travvelextent.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Highlights of Europe Package - 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="20927"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_10/274422/38484.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/274422/38484.jpg"  width="150" height="150"    alt="Highlights of Europe Package" title="Highlights of Europe Package" /></a></p></div></li>
																		<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_10/274422/38485.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/274422/38485.jpg"  width="150" height="150"    alt="Highlights of Europe Package" title="Highlights of Europe Package" /></a></p></div></li>
																		<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_10/274422/38486.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/274422/38486.jpg"  width="150" height="150"    alt="Highlights of Europe Package" title="Highlights of Europe Package" /></a></p></div></li>
																		<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_10/274422/38487.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/274422/38487.jpg"  width="150" height="150"    alt="Highlights of Europe Package" title="Highlights of Europe Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Visit 05 Countries in 10Days (Italy, Vatican, Austria, Switzerland & France) <br />
Accommodation for 02 nights each in Rome, Zurich & Paris <br />
Accommodation for 01 night each in Venice, Innsbruck & Beaune <br />
09 continental breakfasts & 09 delicious dinners <br />
Orientation tour of Rome <br />
Guided visit of the enormous Vatican Museum & Sistine Chapel <br />
Experience how to make Traditional Italian Pizzas in Rome <br />
View the magnificent Leaning Tower of Pisa <br />
Guided city tour of Florence <br />
Guided tour of Venice, the city of canals <br />
Visit Swarovski Crystal World in Wattens <br />
Orientation tour of Innsbruck <br />
Visit the beautiful Rhine Falls with boat ride, Europe’s largest waterfall <br />
Visit Mt. Titlis & enjoy the ride in the world’s first ever revolving `ROTAIR` gondola <br />
Orientation tour of Lucerne <br />
Wine tasting experience in Beaune (Capital of Burgundy Wines and city of art) <br />
Guided city tour of Paris <br />
Enjoy the panoramic view of Paris from the 2nd level of Eiffel Tower <br />
Enjoy romantic cruise on River Seine <br />
Chance to have full day of fun at Disneyland Paris <br />
Chance to enjoy Illumination tour of Paris followed by the World Famous Lido show with a glass of champagne<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> Arrive in Rome
								</p>
								<p class="aj">Welcome on TUI’s exciting tour to Europe. Enter through Rome, the historical city of Italy. On arrival at airport, receive a warm welcome by TUI representative who will then transfer you to your hotel in Rome. Upon arrival, check in at the hotel.<br />
Overnight stay at the comfort of your hotel<br />
</p>					
									<p><b>Meals : </b> Indian Dinner</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> Rome (Vatican , Orientation Tour of Rome & Pizza Making)
								</p>
								<p class="aj">After breakfast, proceed for a guided tour of Vatican City followed by orientation tour of Rome. Visit the Vatican City – the smallest country in the world (shorts or sleeveless vests not allowed). A treasure trove of incredible art and architecture, the museums are the highlight of most Vatican visits. Stroll through the corridors to view the world's largest private art collection, once intended exclusively for the pope. Thereafter, amble through Raphael's Rooms before visiting the breathtakingly beautiful Sistine Chapel, which is considered the pope's home chapel. Walk through this sacred Vatican site to see Michelangelo's astounding frescoes, The Creation of Adam and The Last Judgment. The last part of your small-group Vatican tour focuses on St Peter's Basilica, with its distinctive 450-foot-high (137-meter) dome. St Peters Basilica is said to stand on the ground where St Peter the Apostle was crucified and buried.<br />
Later proceed for an orientation tour of Rome. Enjoy the views of Pantheon Church, Colosseum (outside view), Piazza Navona - one of the most famous and arguably the most beautiful of Rome's many squares and Trevi Fountain. Later, in the evening learn the traditional ways of cooking Italian pizzas, a true Italian culinary experience, thereafter, enjoy your culinary creation.<br />
Overnight stay at the comfort of your hotel.<br />
</p>					
									<p><b>Meals : </b> Continental Breakfast & Local Dinner</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> Rome - Pisa - Florence - Padova
								</p>
								<p class="aj">Today after breakfast, drive to Pisa while enjoying the scenic journey. Explore Pisa on an orientation tour with view of iconic Leaning Tower of Pisa. Later proceed to Florence & enjoy the guided tour of the city including the Duomo, the Campanile and the Baptistery with its Gates to Paradise. Drive to Piazzale Michelangelo, a square on top of a hill with its replica of the impressive statue of David and also get a bird’s eye view of the city of Florence.<br />
Later drive to Padova gateway to the City of Canals - Venice. Overnight stay at the comfort of your hotel.<br />
</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Padova - Venice Island - Innsbruck (Venice city tour)
								</p>
								<p class="aj">After breakfast, enjoy the guided tour of Venice Island. Admire the St. Mark’s square with the Basilica, Doge’s Palace, Campanile and Bridge of Sighs. Also visit the Murano Glass showroom. Feed the Pigeons & click some fun photos with friendly Pigeons. Later proceed to Innsbruck - the Capital of the Alps was two-time host of the Olympic Winter Games (1964 and 1976) and has a history of 800 years. The city offers art treasures and is famous for buildings such as the Golden Roof, the Hofburg and Ambras castle.<br />
Overnight stay at the comfort of your hotel.<br />
</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Innsbruck - Zurich (Swarovski Crystal World)
								</p>
								<p class="aj">Today morning after breakfast, proceed to Wattens, where you will visit the world-famous Swarovski Crystal World. Enjoy a fascinating experience into the ‘world of crystals’. This is great opportunity to buy some breathtaking souvenir pieces for your family & friends.<br />
Thereafter, sit back & enjoy drive to Zurich. Upon arrival proceed for orientation tour of the city.<br />
Overnight stay at the comfort of your hotel.</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Zurich - Mt. Titlis - Lucerne - Zurich
								</p>
								<p class="aj">After breakfast, morning enjoy a trip to Mt. Titlis where you reach after boarding the aerial cableway for a 45 minute journey from the green valley bottom to the high alpine glacier region at 3020m/10000ft which guarantees snow the whole year round. Enjoy a magnificent ride in the world’s first ever revolving `ROTAIR` gondola, which offers a 360° panoramic view into the Alps. Visit the Ice Grotto and experience the new `Ice Flyer`, a chair lift which rides over the glacier with fantastic views into crevasses and ice falls. Newest attraction…an exciting Titlis Cliff Walk awaits you….the spectacular suspension bridge high up on the summit. 3041metres above sea-level! 500metres off the ground! 150 heart pounding steps! The TITLIS Cliff Walk holds the record for being the highest suspension bridge in Europe. Don’t forget to enjoy a snow slide on the `Fun lift`. In evening enjoy an orientation tour of Lucerne visiting the Chapel Bridge, Lion monument & old city squares. Visit Bucherer, famous for its watches and luxury goods. You cannot miss Casa Grande & Sturzenneger for handicrafts & embroideries.<br />
Overnight stay at the comfort of your hotel.</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Zurich - Beaune (Schaffhausen, Wine Tasting)
								</p>
								<p class="aj">After breakfast, drive to Schaffhausen to view the magnificent Rhine Falls, largest in Europe. Enjoy a boat ride to get up close and personal to Rhine Falls. Later continue your journey to Beaune – Capital of Burgundy Wines and city of art, and wander through its typical cobblestone streets. Within its ramparts the charming town of Beaune reveals its historical mansions, medieval half-timbered houses, flowered squares and gardens… Beaune is a city where strolling is a pleasure!<br />
This evening, enjoy Wine Tasting - Beaune is deeply involved in wine culture and trade, and became centre of international wine trade in the 18th century. Thus, Beaune has been designated Capital of Burgundy Wines where wine growers and merchants invite you to discover their wine cellars and taste their best wines.<br />
Overnight stay at the comfort of your hotel.</p>					
									<p><b>Meals : </b> Continental Breakfast & Local Dinner</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> Beaune - Paris (Paris City Tour with River Seine Cruise)
								</p>
								<p class="aj">After breakfast, drive to Paris. Upon arrival, enjoy the guided city tour of Paris. Visit Notre dame Cathedral and Arc de Triomphe, drive through the famous Champs Elysees, Place de la Concorde, Chaillot Palace, Louvre and many more places. Later proceed for a visit to the Eiffel Tower (2nd level) followed by an evening on romantic Seine cruise as we sail past some of the historical monuments on the River Seine. Thereafter, return to the hotel to relax after an exciting day.<br />
Overnight stay at the comfort of your hotel.</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Paris (Optional - Disneyland, Lido Show)
								</p>
								<p class="aj">After breakfast, day is free at leisure or you can opt to join us for some fun, adventure and entertainment on our tour to Disney Park and enjoy the many rides. Watch Disney characters and thrill yourself on a day full of excitement.<br />
Evening is free OR you can choose the option of Illumination tour of Paris followed by a glamorous evening at the world famous Lido Show - Enjoy an unforgettable evening at the world renowned Lido de Paris accompanied with a glass of champagne during the show and be seized by the unique Parisian spirit. Overnight stay at the comfort of your hotel.</p>					
									<p><b>Meals : </b> Continental Breakfast & Indian Dinner</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> Depart Paris
								</p>
								<p class="aj">Today morning after breakfast transfer to airport to board your flight back home or onward destination.</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>						<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.travvelextent.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Highlights of Europe Package - 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="20927"/>
						</form>
						</div>
						
						";i:1;s:68:"Book Highlights of Europe Package - 9 Nights / 10 Days Tour Packages";i:2;s:188:"book highlights of europe package - 9 nights / 10 days tour packages, forts and palaces tour packages, paris, florence, innsbruck, rome, pisa, zurich, lucerne, padova, beaune tour packages";i:3;s:235:"Book Highlights of Europe Package - 9 Nights / 10 Days tour packages from Travvel Extent - Get attractive 9 Nights / 10 Days Forts and Palaces  tour packages for  Paris, Florence, Innsbruck, Rome, Pisa, Zurich, Lucerne, Padova, Beaune.";i:4;s:1647:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Paris, Florence, Innsbruck, Rome, Pisa, Zurich, Lucerne, Padova, Beaune"        
		                 },
		      "description": "Visit 05 Countries in 10Days (Italy, Vatican, Austria, Switzerland & France) 
Accommodation for 02 nights each in Rome, Zurich & Paris 
Accommodation for 01 night each in Venice, Innsbruck & Beaune 
09 continental breakfasts & 09 delicious dinners 
Orientation tour of Rome 
Guided visit of the enormous Vatican Museum & Sistine Chapel 
Experience how to make Traditional Italian Pizzas in Rome 
View the magnificent Leaning Tower of Pisa 
Guided city tour of Florence 
Guided tour of Venice, the city of canals 
Visit Swarovski Crystal World in Wattens 
Orientation tour of Innsbruck 
Visit the beautiful Rhine Falls with boat ride, Europe’s largest waterfall 
Visit Mt. Titlis & enjoy the ride in the world’s first ever revolving `ROTAIR` gondola 
Orientation tour of Lucerne 
Wine tasting experience in Beaune (Capital of Burgundy Wines and city of art) 
Guided city tour of Paris 
Enjoy the panoramic view of Paris from the 2nd level of Eiffel Tower 
Enjoy romantic cruise on River Seine 
Chance to have full day of fun at Disneyland Paris 
Chance to enjoy Illumination tour of Paris followed by the World Famous Lido show with a glass of champagne",
		      "name": "Highlights of Europe Package",
		      "telephone": "+91-9706071620"
		    }
		    </script>
			";i:5;N;}