a:6:{i:0;s:13634:"				<div class="h1"><h1>Mystic Ladakh Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.visithimalayatours.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.visithimalayatours.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mystic 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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Leh Ladakh, Likir, Alchi</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.visithimalayatours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mystic 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="38897"/>
						</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/283509/78682.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/283509/78682.jpg"  width="150" height="150"    alt="Mystic Ladakh Tour" title="Mystic Ladakh 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> Arrival Leh drive to Likir. (60 Kms / 1 ½ Hrs)
								</p>
								<p class="aj">Arrival Leh, Wisdom representative will meet, greet, assist and transfer you to your hotel in Likir. Rest of the day free to acclimatize to the high altitude of Ladakh. In the evening take a walk in the serene and calm Likir village and visit Likir Gompa. Return to Hotel for dinner and overnight stay in Likir.<br />
LIKIR GOMPA : Founded in the 11th century and rededicated to a different monastic order in the 15th century, its earlier Gompa was destroyed in a fire. The present Gompa dated back to the 18th century. Skilled craftsmen producing excellent Thankas, earthen pots and carved wooden folding stools, live here in the village. Majestically situated, Likir commands a spectacular view. A magnificent giant Jupiter tree, one of the few survivors of its species, stands in the courtyard.</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> Drive to Leh via Alchi
								</p>
								<p class="aj">After breakfast at the hotel drive to Alchi village to see 1000 years old Alchi Dhammchakra Centre. Later drive to Leh, enroute visiting Confluence of Indus and Zanskar river, Basgo fort, Gurudwara Patthar Sahib, Magnetic Hill and Spituk monastery. Evening free to stroll around Leh market. Dinner and overnight at the hotel in Leh. <br />
ALCHI GOMPA : 70 Kms from Leh, on the banks of the Indus, is the Alchi Gompa dating a thousand years back. One of its walls features thousands of miniature sized pictures of the Buddha. Three large sized images made of clay and painted brightly are its focal attractions. No longer an active religious center, it is looked after by monks from the Liker monastery. This is the only monastery amongst 34 monasteries, which is not located on a hilltop.<br />
CONFLENCE OF THE ZANSKAR & INDUS : On way to Sham Valley before Nimu village one can have this magnificent view of two rivers in wed-lock! In seasons they have different colors and flow and wildness.<br />
BASGO GOMPA : 40 Kms downstream from Leh, it was the seat of power of branch of a Namgyal family. It was here in 1680 that invading Mongol and Tibetan armies were held in check over a three year old siege. Original 16th century murals and other arts at Basgo are well worth a visit. <br />
GURDWARA SHRI PATTHAR SAHIB : The Shrine known as Gurudwara Patthar sahib is situated about 25 kms. Short of Leh town on the Leh-Srinagar road. Built in the everlasting memory of Shri Guru Nanak Deve Ji the great prophet who sanctified the place by his sacred visit during the year 1517 while on his second missionary tour (2nd Udassi 1515-1518). The Guru reached here via Nepal, Sikkim, Tibet Yarkand and Leh after having spiritual discourses with the sidhas at Mount Sumer (Central Himalayas). On the hill features across the road, there used to live a wicked demon that terrorized the people of the area. Their miseries multiplied day by day. As their miseries became unbearable they prayed for divine help. It is said that the Great Guru heard their woes and came to their rescue. The Guru settled down on the bank of the river flowing nearby. The people sought for help and the Guru blessed the people and became very popular in the area. The locals called him as Nanak Lama. The Demon got enraged and started making plans to kill Guru Nanak. One morning, when the Guru was sitting in meditation, he rolled down a big boulder from the hilltop with the aim of killing the Guru. But on the very touch of Guru’s body, the solid rock melted like wax and Guru’s back got embedded on it like a cushion. The Guru kept on sitting in meditation undisturbed. Thinking that the Guru must have been killed, the demon came down but was taken aback on seeing the Guru in meditation, undisturbed. With a rage of anger he tried to push the rock with his right foot but the rock had already became like wax his foot also got embedded into it. On this , he realized his folly and powerlessness as compared to the spiritual power of the Great Guru. He fell on the feet of Guru and humbly prayed to be pardoned. The Guru advised him to get rid of his wickedness and lead the life of a nobel person, in the service of humanity. This changed the life style of demon and he started serving the people. The Guru there after continued his Holy journey towards Srinagar and Kashmir via Kargil.<br />
The boulder having imprint of the Guru’s back is lying in the Gurdwara to this day.<br />
MAGNETIC HILL : Defying the Law of gravity. This place is close to the Gurdwara Shri Patthar Sahib. It has been noticed that when a vehicle is parked on neutral gear on this metallic road the vehicle slides up-hill that’s the Believe it or not of Ladakh!<br />
SPITUK GOMPA : 8 Kms from Leh, it stands prominently on the top of hillock commanding a panoramic view of the Indus Valley for miles. Many icons of Buddha and fine Thankas are to be found in this 15th century Gompa. The Gompa also houses a collection of ancient masks, antique arms, and an awe-inspiring image of Mahakaal. The face of the Kali image is kept covered and is revealed only at the annual function at January every year.</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> Excursion to Khardung la Pass (78 Km round trip)
								</p>
								<p class="aj">After breakfast prepare yourself for the ultimate adventure of your life. We will drive upto the Kardung la Top to have a magnificent view of the surrounding valleys. After spending some time at the top, return to Leh. On the way visit Ladakh’s first Donkey Sanctuary. Reach hotel in the evening for dinner and overnight stay. <br />
KHARDUNG LA PASS : The road journey to Nubra valley leads through Khardung La pass (The highest Motorable road in the world) 18,390 ft. around 39 Kms. Away from Leh. There are two checkpoints on the both sides of the pass. Khardung is the first village of Nubra valley at higher altitude than Deskit and other villages.<br />
DONKEY SANCTUARY : The sanctuary is situated just off the road leading to Khardung la Pass. The public is encouraged to visit the sanctuary and friendly signs will direct you to the sanctuary from the center of Leh. Once at the sanctuary, the artistic surprise awaiting you is well worth the effort. It is open to the public throughout the day and donations and juicy carrots are most welcome and used exclusively for improving the lives and welfare of these wonderful animals.</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> Excursion to Pangong Lake (280 Kms round trip)
								</p>
								<p class="aj">Morning after breakfast drive to to Pangong Lake on the Indo China border. Evening back to hotel in Leh for dinner and overnight.<br />
THE PANGONG LAKE : This route takes the visitor past the picturesque villages of Shey and Thikse, and turns off the Indus valley by the side valley of Chemrey and Sakti. The Ladakh range is crossed by the Chang-la (18,000 feet / 5,475 M) which despite its great elevation is one of the easier passes, remaining open for much of the year even in winter, apart from periods of actual snowfall. Tangse, just beyond the foot of the pass, has an ancient temple. <br />
But the main attraction of this circuit is the Pangong Lake, situated at 14,000 feet (4,267 M). A long narrow basin of inland drainage, hardly six to seven kilometers at its widest point to which foreigners are permitted, is only some seven km along the southern shore from the head of the lake, but it affords spectacular views of the mountains of the Changchenmo range to the north, their reflection shimmering in the ever-changing blues and greens of the lakes brackish water. Above Spangmik are the glacier and snow-capped peaks of the Pangong range.</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> Airport Departure
								</p>
								<p class="aj">Leave on time for Leh airport to board your flight to Delhi.</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.visithimalayatours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mystic 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="38897"/>
						</form>
						</div>
						
						";i:1;s:57:"Book Mystic Ladakh Tour - 4 Nights / 5 Days Tour Packages";i:2;s:119:"book mystic ladakh tour - 4 nights / 5 days tour packages, valley tour packages, leh ladakh, likir, alchi tour packages";i:3;s:173:"Visit Himalaya Tours & Trek Pvt. Ltd. offers Mystic Ladakh Tour - 4 Nights / 5 Days tour package, budget Valley tour packages for Leh Ladakh, Likir, Alchi at exciting price.";i:4;s:414:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Leh Ladakh, Likir, Alchi"        
		                 },
		      "description": "",
		      "name": "Mystic Ladakh Tour",
		      "telephone": "+91-9899262860"
		    }
		    </script>
			";i:5;N;}