a:6:{i:0;s:13472:"				<div class="h1"><h1> Paradise on Earth Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.heavensgroup.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.heavensgroup.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b> Paradise on Earth Tour</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">
						11 Nights / 12 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Srinagar, Pahalgam, Sonamarg, Gulmarg, Dachigam</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.heavensgroup.co.in/travel-inquiry.htm">
						<input type="hidden" name="subject" value=" Paradise on Earth Tour - 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="43827"/>
						</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_10/278544/86821.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/278544/86821.jpg"  width="150" height="150"    alt=" Paradise on Earth Tour" title=" Paradise on Earth Tour" /></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> Arrive Delhi
								</p>
								<p class="aj">On reaching Delhi, you will meet  representative who will help you with an assisted transfer to your pre-booked hotel. Spend the day at leisure in doing the activities that you want to such as visiting the popular market, exploring the attractions or enjoying the lip-smacking street food. Stay overnight in Delhi.</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> Delhi - Srinagar
								</p>
								<p class="aj">Today, after breakfast, you will get an on-time transfer to the city’s airport to catch a flight for Srinagar.  representative will meet and greet you as well as help you with an assisted transfer to your Deluxe Houseboats. Afterwards, in the late hours of the afternoon, you will enjoy a Shikara ride on the Dal Lake. While cruising, visit the floating gardens, vegetable gardens, walnut woodcarving and paper machine making demonstration. Dinner and night stay in the houseboat.</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> Srinagar
								</p>
								<p class="aj">Day 3 is for sightseeing of Srinagar which will include the well-known Mughal Gardens that will include Nishat Bagh that was constructed by Asif Khan in 1632 AD. as well as Shalimar Bagh that was constructed  by Jehangir for Noor Jehan, his wife. These beautiful gardens are located on the bank of Dal Lake that are on the foothills of the Zabarwan Mountains. While returning back to your hotel, on the way, you will halt at the carpet-weaving factory. Dinner and night stay in your houseboat.</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> Srinagar - Dachigam National Park
								</p>
								<p class="aj">On the 4th day of your tour, one you will have your breakfast, you will leave for visiting the Dachigam national park, situated in the beautiful Dachigam valley. Declared as a national park in 1951, it was once the private hunting ground of the Maharaja of Kashmir. This national park is home to rare Kashmir stag (Hangul), musk deer as well as black and brown bears. Enjoy wildlife safari into at the park. In case you love camping, you can trek upwards. Stay overnight in the houseboat.</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> Srinagar - Pahalgam
								</p>
								<p class="aj">Relish your lip-smacking breakfast at the House Boat and proceed to the very beautiful Pahalgam, popular as the valley of the Shepherds. This road journey is going to be a treat to your eyes. On the way, halt at the well-known temple of the followers of the Hindu religion – Martand Sun temple, also called Mattan. After reaching, check-in at your pre-booked hotel. The rest of the day is free for leisure activities, you can indulge in horse riding, trekking or simply enjoy the surroundings on foot. Stay overnight.</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> Pahalgam
								</p>
								<p class="aj">Post breakfast, leave for a day-trip to Chandanwari. Quite well-known for its natural beauty, streams and springs, this place is the starting point of the Amarnath Yatra. Once you reach there, treat your eyes with the surrounding beauty of a variety of flowers and snow-clad mountains. Return to your hotel for lunch. Take a little nap after lunch. The evening is for enjoying the Kashmiri Cultural Show. Night 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> Pahalgam
								</p>
								<p class="aj">After enjoying your breakfast, you will hit the road to go to the Aru valley, an extremely beautiful place. Enjoy being amidst the natural surroundings, take a leisure walk here. Back to the hotel for having lunch. The rest of the day is free for the activities of your interest. If you want then you can trek down to Bysaran and Shikarga. You can also enjoy a pony ride. Dinner and night stay in 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> Pahalgam - Gulmarg
								</p>
								<p class="aj">On the 8th day of your tour, have your breakfast and leave for visiting Gulmarg, also referred to as 'Meadow of Flowers'. Once you reach, check-in at your hotel enjoys a Gondola Ride that is a cable car ride. Also visit the green 18-hole golf course, the highest one in the world. Carry packed lunch. Enjoy taking a leisure walk. Dinner and night stay in 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> Gulmarg
								</p>
								<p class="aj">Post breakfast, spend the day enjoying in Gulmarg. You can do the activities of your interest. If you want, you can enjoy horse riding, Cable car ride, skiing, sightseeing and so on. Dinner and overnight stay in Gulmarg.</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> Gulmarg - Srinagar
								</p>
								<p class="aj">On day 10, have your breakfast and hit the road to go to Srinagar . on arrival, check into your luxury houseboat. After freshening up, set out for a Shikara ride, where you are going to cruise along the floating gardens. Also visit other attractions such as Lotus Gardens, Kabooter Khana (Pigeon palace) and Char Chinar. Dinner and overnight stay in the houseboat.</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> Srinagar - Sonamarg - Srinagar
									</p>
									<p class="aj">Have your breakfast and leave for a day-trip to Sonamarg, one of the most striking drives where you can stop on the way to click pictures. Proceed to Sonamarg, also known as Meadow of Gold  (2690Mtrs), which  is also a Gateway to Ladakh. In the evening back to the houseboat for dinner and 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 12:</b> Srinagar - Delhi
									</p>
									<p class="aj">Today is the last day of your tour, when after breakfast, you will get an assisted transfer to the Srinagar airport to catch a flight to Delhi. on reaching, you will transported to the airport or the railway station to board a flight  or train for your onward 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>
															<li>Hotel</li>
																		<li>Sightseeing</li>
																		<li>Transport</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.heavensgroup.co.in/travel-inquiry.htm">
						<input type="hidden" name="subject" value=" Paradise on Earth Tour - 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="43827"/>
						</form>
						</div>
						
						";i:1;s:64:"Book  Paradise on Earth Tour - 11 Nights / 12 Days Tour Packages";i:2;s:160:"book  paradise on earth tour - 11 nights / 12 days tour packages, valley tour packages, new delhi, srinagar, pahalgam, sonamarg, gulmarg, dachigam tour packages";i:3;s:207:"Book  Paradise on Earth Tour - 11 Nights / 12 Days tour packages from Heavens Group - Get attractive 11 Nights / 12 Days Valley  tour packages for  New Delhi, Srinagar, Pahalgam, Sonamarg, Gulmarg, Dachigam.";i:4;s:453:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Srinagar, Pahalgam, Sonamarg, Gulmarg, Dachigam"        
		                 },
		      "description": "",
		      "name": " Paradise on Earth Tour",
		      "telephone": "+91-9034015553"
		    }
		    </script>
			";i:5;N;}