a:6:{i:0;s:12942:"				<div class="h1"><h1>ITALY 6N/7D Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.emplanetourandtravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.emplanetourandtravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>ITALY 6N/7D 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Florence, Rome</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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="ITALY 6N/7D 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="120505"/>
						</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_17/508950/195172.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/508950/195172.jpg"  width="150" height="150"    alt="ITALY 6N/7D Package" title="ITALY 6N/7D Package" /></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> Arrival At Rome
								</p>
								<p class="aj">Upon arrival in the city of Rome, the capital of Italy, please clear your immigration and customs and head to the baggage claim area. Collect your baggage and exit the airport.Later, transfer from airport to the hotel.The check-in time at all hotels begins at 2:00 pm. You may have to wait if you arrive earlier than that. Post check-in, you can explore this beautiful city on your own. A stroll down the road will showcase the best of Rome and provide great photo opportunities.Enjoy the evening at leisure and have a comfortable overnight at hotel.Stay overnight at the hotel in Rome.</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
								</p>
								<p class="aj">Enjoy a relaxed breakfast at the hotel.There is more to see here than in any other city in the world. In the afternoon, enjoy a walk through the heart of Ancient Rome, an area rich with historical memories where the great epic of Rome began. From Venice Square you will walk up the Capitol Hill from where you will enjoy an incredible view of the Forum. Continuing onwards, we will first admire Trajan`s Column with its gorgeous bas-relief sculptures to then walk through the Roman Forum, which is the centre of the public life of ancient Rome, until we finally arrive at the Colosseum (visit inside). Thanks to a preferred entrance ticket, you will be able to skip the entrance line.DURATION OF THE TOUR: Approximately 3 hours.Stay overnight at the hotel in Rome.</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 – Florence
								</p>
								<p class="aj">Enjoy a sumptuous breakfast at the hotel.Later, check out of the hotel. Settle extras, if any.Transfer to the train station to board a train to Florence city. On arrival in Florence, transfer to your hotel. This will be a day at leisure. You can enjoy soaking in the beauty of Florence, the most active centre of the Renaissance period.Stay overnight at the hotel in Florence.</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> FLORENCE – PISA
								</p>
								<p class="aj">Enjoy a sumptuous breakfast at the hotel.After a leisurely morning, take a splendid excursion through the fertile and picturesque Tuscan countryside to the historic university city of Pisa, famous for its architectural beauty. Upon arrival in Pisa, your guide will take you on a thorough outdoor guided walking tour of Piazza Dei Miracoli and its monuments (From the outside only). You will be dazzled by this marvelous square which is dominated by the Cathedral, a model of the distinctive Pisa-like Romanesque architecture, the celebrated Leaning Tower, and the round-shaped Baptistery surrounded by its suggestive columned arcades<br />
<br />
The commentary of our guide will be particularly focused on the Leaning Tower one of the wonders of the world. You will be enthralled by the history and the leaning structure of the Tower which stirs the imagination of all visitors.Then, our guide will lead you through the historical quarter where you can admire the church of San Sisto, one of the oldest churches in Pisa.After a pleasant guided walk you will reach Piazza Dei Cavalieri which was a political centre during the Middle Ages.<br />
<br />
Our guide will introduce this amazing square where you can admire the historic Scuola Normale, one of the most famous universities in the world, the house of Count Ugolino Della Gherardesca also called "Conte Ugolino Tower" as told by Dante in the Divine Comedy.Passing the famous medieval Tower Houses, you will be captivated by the explanation provided by our guide about the history of these particular buildings.While walking through the downtown streets, you can admire the ancient house where Giacomo Leopardi - the famous Italian poet - lived. Then you will reach the amazing Piazza Arcivescovado where the impressive Palazzo Vescovile is located. After the guided tour you will have free time at your disposal.TOUR: Approximately 5 hours.Stay overnight at the hotel in Florence.</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> FLORENCE – VENICE
								</p>
								<p class="aj">Relish the sumptuous breakfast at the hotel.Later check out of the hotel and settle extras if any.Proceed to the Florence station to board a train to Venice. On arrival in Venice, transfer to your hotel. Venice is built on 117 small islands it has some 150 canals and 409 bridges.Have a comfortable overnight stay at the hotel in Venice.</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> VENICE
								</p>
								<p class="aj">Today after continental breakfast, we proceed for Euro-Disney. A day full of action for the children of all ages. One-day pass Enjoy an early morning breakfast.Morning at leisure to explore this romantic city of Venice.In the afternoon, take the tour to three of the most important islands of Venice, Torcello, Burano, and Murano.Torcello is known for being the first island to be inhabited in the Venice Lagoon: the inhabitants of Altino moved here from the Vth century. The cathedral contains some wonderful mosaics.But the island is known today as a place of quiet because it has a little more than 20 residents and it looks like it`s from some other dimension.Burano, Venice inhabited island, has about 3000 people. "It is known mostly for its handmade lace and typical sweets "bussolai", and also for bright colored houses", say the inhabitants.<br />
<br />
The houses are painted in different colors in order to make them recognizable to the fishermen when they came home during periods of fog.Murano is known around the world for the artistic production of blown glass. Initially, the production took place in Venice, but at the time the buildings were made of wood and often the fire of the ovens caused several fires. So, the Republic was ordered to move the seat of the furnaces to this island. On the island, you can also visit the Glass Museum which contains a large collection of glassware.Have a comfortable overnight stay at the hotel in Venice.</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> Departure From Venice to India
								</p>
								<p class="aj">BACK TO INDIA Relish the sumptuous breakfast at the hotel.Thereafter checkout of your hotel and drive to the airport. It takes about 60-90 minutes to drive to the airport. Please check out of the hotel on time, settle your extras if any, and be ready in the lobby at least 10 minutes prior to the departure time given to you.You will be picked up from the hotel, and transferred to the airport. On arrival at the airport, please check in at the respective airline counter (check for the number on the various screens given) and clear your immigration and security check.Hope you have pleasant memories of the trip.</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>
															<li>Hotel</li>
															</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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="ITALY 6N/7D 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="120505"/>
						</form>
						</div>
						
						";i:1;s:58:"Book ITALY 6N/7D Package - 6 Nights / 7 Days Tour Packages";i:2;s:112:"book italy 6n/7d package - 6 nights / 7 days tour packages, heritage tour packages, florence, rome tour packages";i:3;s:169:"Book ITALY 6N/7D Package - 6 Nights / 7 Days tour packages from Emplane Tours and Travels - Get attractive 6 Nights / 7 Days Heritage  tour packages for  Florence, Rome.";i:4;s:405:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Florence, Rome"        
		                 },
		      "description": "",
		      "name": "ITALY 6N/7D Package",
		      "telephone": "+91-8005957779"
		    }
		    </script>
			";i:5;N;}