a:6:{i:0;s:20241:"				<div class="h1"><h1>Amazing Leh Ladakh Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.grabyourholidays.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.grabyourholidays.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Amazing Leh Ladakh 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Leh Ladakh</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 52000 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grabyourholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Amazing Leh Ladakh 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="88861"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Airfare to and from Leh or any other destination<br />
Any kind of personal expenses, extra meals, starters & Drinks (Alcoholic, Mineral, Aerated etc)<br />
Any kind of optional tours<br />
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee<br />
Services of vehicle on leisure days and after finishing the sightseeing tour<br />
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc)<br />
Medical & Travel insurance<br />
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury<br />
Anything not mentioned under the category10-0331-07<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> Day 01 : LEH
								</p>
								<p class="aj">Arrival at Leh Airport – Assistance upon Arrival and Proceed the hotel/resort get freshen up and free for Leisure relax for acclimatization to the high altitude of Leh (11,500 ft / 3500 mtrs) – Afternoon move for Sightseeing / Visits in Leh – Visit at Shanti Stupa, Leh Palace, Central Asian Museum – Evening Visit at Leh Market Leh Embodiment of natural beauty, picturesquely nestled by Karakoram and Himalayan ranges,District Leh with an area of 45100 SqsKms makes it 2nd largest district in the country after Kutch (Gujrat) with an area 45652 Sqs Kms in terms ofarea. The district in the west and china in the north and eastern part and LahulSpiti of Himachal Pardesh in the south east. It is at a distance of 434 Kms from State capital (Summer) Srinager and 474 Kms from Manali (HP).Perfectly located on the banks of the renowned Indus River with all its majesty and amazing sceneries, Leh valley attracts tourists from all over the world to its lap all through the year.The major part of the Leh city is covered by ancient Buddhist monuments, Mosques dating back to 16th and 17th centuries and a nine storied palace Sengge Namgyal constructed in Tibetan architectural style Leh Palace is a former royal palace overlooking the Ladakhi Himalayan town of Leh. Modelled on the Potala Palace in Lhasa, Tibet, the palace was built by King Sengge Namgyal in the 17th century. It is nine storeys high; the upper floors accommodated the royal family, while the lower floors held stables and store rooms. The palace was abandoned when Dogra forces took control of Ladakh in the mid 19th century, and the royal family moved to Stok Palace. The ruined palace is being restored by the Archaeological Survey of India. The palace is open to the public and the roof provides panoramic views of Leh and the surrounding areas. The mountain of Stok Kangri in the Zangskar mountain range is visible across the Indus valley to the south, with the Ladakh mountain range rising behind the palace to the north. The Palace Museum<br />
holds a rich collection of jewellery, ornaments, ceremonial dresses and crowns. Tibetan thangka or sooth paintings which are more than 450 years old, with intricate designs, retain bright and pleasing colours derived from crushed and powdered gems and stones.</p>					
									<p><b>Meals : </b> No Meals</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> Day 02: LEH – ULEYTOKPO (SHAM VALLEY) / LEH
								</p>
								<p class="aj">After Breakfast move for Sightseeing / Visits in and around Leh Drive downstream along the River Indus on Leh – Kargil Highway. En-route Visit at Gurudwara Patthar Sahib Nestled deep in the Himalayas,The Hall of Fame The Hall of Fame then A drive of another 4 km took us to Magnetic Hill which defies the law of gravity & further Driving through a picturesque landscape we reached the Confluence Of The Indus And Zanskar River,<br />
Just before Saspul a road to the right takes you for your visit to the Likir Monastery, Likir is one of the most active monasteries in the region. As you drive up to the monastery a recently installed colossal gilded image of the Maitreya out in the open is one of the most impressive sights in Ladakh. Visit Alchi Monastery and drive continue along the River Indus to or Uletokpo or Tingmosgang en-route Visit at Ridzong Monastery, there is the option to walk up to the Monastery for those that wish to do so. Hidden at the end of a steep valley, the first view of the Monastery is dramatic<br />
The Hall of Fame, Located near the Leh Airfiled, is a museum constructed as well as maintained by the Indian Army in the memory of the soldiers who had lost their lives during the Indo- Pak wars. It is also termed as a memorial for the war heros. This building consists of two floors.While on the ground floor, there is information about the brave soldiers as and a souvenir shop but on the first floor, there are artifacts of various wars (mainly Kargil war) such as the weapons used during the war and some important documents,related to the same. There is another section dedicated to the Siachen glacier Alchi Monastery or Alchi Gompa, known more as a monastic complex (chos-'khor) of temples in Alchi village in the Leh. The complex comprises four separate settlements in the Alchi village in the lower Ladakh region with monuments dated to different periods. Of these four hamlets, Alchi monastery is said to be the oldest and most famous. The monastery complex was built, according to local tradition, by the great translator Guru Rinchen Zangpo between 958 and 1055. However, inscriptions in the preserved monuments ascribe it to a Tibetan noble called Kal-dan Shes-rab later in the 11th century.Likir Monastery or Likir Gompa (Klud-kyil) is a Buddhist monastery in Ladakh, It is picturesquely situated on a little hill in the valley, Likir is mentioned in the Ladakhi chronicles as having been erected by King Lhachen Gyalpo (Lha-chen-rgyal-po) (c. 1050- 1080 CE). The name Likir means "The Naga -Encircled", representing the bodies of the two great serpent spirits, the Naga-rajas, Nanda and Taksako. It presumably, originally belonged to the early Kadampa order of Tibetan Buddhism. It belongs to the Gelugpa sect of Tibetan Buddhism and was<br />
established in 1065 by Lama Duwang Chosje, under the command of the fifth king of Ladakh, Lhachen Gyalpo (Lha-chen-rgyal-po).11th Century Lamayuru Monastery and Moon Land Scapes (you will believe why the name of this area is Moonland. Exactly the same formations of Land are visible as on the moon), Lamayuru is spectacularly located along the valley plain and surrounded by mountains on all sides.</p>					
									<p><b>Meals : </b> Breakfast</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> Day 03 : LEH – NUBRA VALLEY (120 KMS / 04 – 05 HRS)
								</p>
								<p class="aj">After Breakfast move for Nubra Valley passing thru Horzey & Gangles Village. The road then rises to reach Khardungla (5602 Mts.) The World's Highest Motor able road Khardong La is historically important as it lies on the major caravan route from Leh to Kashgar in Central Asia. About 10,000 horses and camels used to take the route annually, and a small population of Bactrian camels can still be seen at Hunder, in the area north of the pass. During World War II there was an attempt to transfer war material to China through this route. & enjoy the landscape & the beautiful bird’s eye view of the Leh town. Halt for a picnic lunch at Khardong village + Another 35 Kms drive takes to Khalsar at ShyokValley, where the scenery is all around. The road after crossing Khalsar Bridge at Shyok River enters Nubra Valley then proceeds along the Nubra River to arrive in the afternoon at Tegar or Kyegar as locally called – Later transfer to camps /resort get relaxed and move for Sand Dunes to get thrill experience of The Double Hump Bactrian Camel Safari at Hunder Sand Dunes Nubra Valley, a tri-armed valley located to the north east of Ladakh valley. Scholars say that its original name was Ldumra (the valley of flowers). The Shyok River meets the Nubra or Siachan River to form a large valley that separates the Ladakh and Karakoram Ranges.The Shyok river is a tributary of the Indus river.The average altitude of the valley is about 10,000 ft. i.e. 3048 metres above the sea level.Like the rest of the Tibetan Plateau, Nubra is a high altitude cold desert with rare precipitation and scant vegetation except along river beds.</p>					
									<p><b>Meals : </b> Breakfast and 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> Day 04 : NUBRA VALLEY – LEH (190 KMS / 06 – 07 HRS)
								</p>
								<p class="aj">After Breakfast move to Visit at Diskit Monastery by afternoon drive back to Leh over the same Pass –Arrival at Leh as per the timings,Diskit Monastery also known as Deskit Gompa or Diskit Gompa is the oldest and largest Buddhist monastery (Gompa) in the Nubra Valley of Ladakh.It is picturesquely laid out on a hill side in typical architectural style,overlooking the Shyok river valley and the cold desert sands of Nubra. This is affiliated to the Thiksey Monastery of the Yellow Hat Sect of Tibetan Buddhists.</p>					
									<p><b>Meals : </b> Breakfast</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> Day 05: LEH – PANGONG (145 KMS / 04 – 05 HRS)
								</p>
								<p class="aj">After Breakfast move for Sightseeing / Visit at Shey, Thiksey, Hemis and Sindhu Ghat and then drive continue to Pangong via Changla Pass (17,586 feet) and the third highest pass of the world. Pangong Lake is a salt water body of 120 km in length and 6 – 7 Km broad at the longest point. It is bisected by the international border between India & China (2/3 of the lake is in China’s possession). Visit the exact location of the famous movie “Three idiots” & enjoy outing along the banks of the lake. One really feels very close to nature at Pangong Lake with its scenic surroundings.On a clear sunny day, you can see seven colour formations in the crystal clear salt water lake – explore the panoramic beauty of Lake – later transfer to camp / resort as per the timings,</p>					
									<p><b>Meals : </b> Breakfast and 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> Day 06: PANGONG – LEH
								</p>
								<p class="aj">After Breakfast, travel back to Leh. En-route take a short halt at Changla Pass to enjoy a cup of hotsteaming tea and Visit at 3 Idiots School –Arrival at Leh as per the timings.</p>					
									<p><b>Meals : </b> Breakfast</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> Day 07: LEH
								</p>
								<p class="aj">After Breakfast transfer to Leh Airport as per the timings.</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>
															<li>3 Star Hotel</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfare to and from Leh or any other destination</li><li>
Any kind of personal expenses, extra meals, starters & Drinks (Alcoholic, Mineral, Aerated etc)</li><li>
Any kind of optional tours</li><li>
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee</li><li>
Services of vehicle on leisure days and after finishing the sightseeing tour</li><li>
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc)</li><li>
Medical & Travel insurance</li><li>
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury</li><li>
Anything not mentioned under the category</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<ul>
	<li>Prices valid from&nbsp;<span data-term="goog_361278492" tabindex="0">01st April 2017 to 31st March 2018</span>.</li>
	<li>Prices valid for minimum 04 Adults</li>
	<li>Check-In / Check-out time at all the properties would at 1200 hrs (<span data-term="goog_361278493" tabindex="0">Noon</span>)</li>
	<li>All Cost quoted is in INR (Indian Rupee).</li>
	<li>100% payment to be deposited before the trip starts.</li>
	<li>Final tour Vouchers will be provided on receipt of full 100% payment.</li>
	<li>Extras Payment in Leh office should be Cash Only.</li>
	<li>Vehicle Provided as per mention tour plan (Point to Point Basis only)</li>
	<li>In Case of exceptional circumstances where in we are not in position to provide Hotel mentioned, we shall offer similar Hotel.</li>
	<li>April &amp; October Month, Pangong Lake Journey will be done in one-day excursion.</li>
	<li>No Refund or Compensation for any unused services / transportation in any circumstance.</li>
	<li>Visit to all Museums in program is subject to their remaining open on day of visit as per rules of competent authority.</li>
	<li>We will not bear any cost for flight cancelled or delayed due to Bad weather or any other reason given by the airline. Cost for accommodation and transport in such cases will have to be borne by passenger.</li>
	<li>In case of increase in Airfare (If included) we shall be duly compensated by actual supplement cost at time of booking</li>
	<li>There would be no refund for the road blocks at Nubra Valley | Pangong Lake &amp; Tsomoriri Lake due to natural calamity. The alternate accommodation Cost at Leh due to the same should be bear by the passenger directly.</li>
	<li>No changes in the date of travel once booked.</li>
	<li>All Rates &amp; bookings subject to availability.</li>
	<li>Rates are subject to change.</li>
	<li>Room allotment will be as per availability at the time of check in, floor or view preferences are not guaranteed.</li>
	<li>Food menu as per availability of vegetables based on Buffet | Fixed menus</li>
	<li>25% advance (Non Refundable) to be deposited at the time of booking confirmation &amp; Balance 75% one month prior to arrival.</li>
	<li>Cost of Child between 5 to 11 Yrs (Without Bed only) &amp; Children above the age of 12 years will be charged the applicable adult rates &amp; for extra Bed kindly consider the cost of Extra Bed.</li>
	<li>Child below 5 Yrs of age will be complimentary without extra Bed..</li>
	<li>Maximum 7 Pax can be accommodated in one vehicle (Scorpio or Similar)</li>
	<li>Any addition in Tax or Fuel charge done by Airlines / Transport Company etc will be chargeable to group members.</li>
	<li>All expenses which are not included in the cost of package shall be paid directly by tourist at the time of checkout.</li>
	<li>All tourists are advised to take comprehensive Insurance on their own.</li>
	<li>The timings given in itinerary and program may be changed without notice keeping in mind local development.</li>
	<li>Journey can be arranged from Delhi / Chandigarh / Jammu Railway Station or Airport at Nominal Extra charges.</li>
	<li>Hotel Accommodation in Delhi | Chandigarh | Manali | Keylong | Jammu | Srinagar can be arranged on best deals.</li>
	<li>Blocking of Rooms will be hold for period of 01 month only.</li>
	<li>Tour is organized on the basis final instructions and requirements received from yourselves and on your own risk and responsibilities.</li>
</ul>						
    	<p class="h dif xlarge b mb5px">Deluxe Package</p>
    	<div class="otherDetails aj">Hotel Royal Holiday  / Similar in Leh <br>
Nomedic Life Camp / Similar in Nubra Valley <br>
Panong Delight Camp / Similar in Panong</div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grabyourholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Amazing Leh Ladakh 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="88861"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Amazing Leh Ladakh Tour - 6 Nights / 7 Days Tour Packages";i:2;s:118:"book amazing leh ladakh tour - 6 nights / 7 days tour packages, lakes & rivers tour packages, leh ladakh tour packages";i:3;s:153:"Grab Your Holidays offers Amazing Leh Ladakh Tour - 6 Nights / 7 Days tour package, budget Lakes & Rivers tour packages for Leh Ladakh at exciting price.";i:4;s:977:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Leh Ladakh"        
		                 },
		      "description": "Airfare to and from Leh or any other destination
Any kind of personal expenses, extra meals, starters & Drinks (Alcoholic, Mineral, Aerated etc)
Any kind of optional tours
Tips, Insurance, Laundry, Phone Calls, Guide Fee & Camera Fee
Services of vehicle on leisure days and after finishing the sightseeing tour
Adventure activity costs (Pony Ride, Camel Safari, Rafting, paragliding etc)
Medical & Travel insurance
Additional Costs due to Flight Cancellations, Road blocks, natural calamities and nature’s fury
Anything not mentioned under the category10-0331-07",
		      "name": "Amazing Leh Ladakh Tour",
		      "telephone": "+91-8888872247"
		    }
		    </script>
			";i:5;N;}