a:7:{i:0;s:80010:"				<section id="middle" class="propDtls ttwBtmFtSpace">
				<div class="wrap thinFormat " id="bodyFormatNT">
									<div class="ar small fo"><a href="https://www.goodwillholidays.in/" title="Home">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b> <a href="https://www.goodwillholidays.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
											
					<b class="ffv p2px">&rsaquo;</b> <span class="alpha75">A Bit of Offbeat Ladakh with an Adventure Tour</span></div> 
									
				<div class="row1 dt columns23"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<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>
				
					<div class="data mb15px mt15px p10px"> 
	 				<div class="fo dt w100"> 	 				
	 									<div class="dtc pt7px ttwDtlsCont">
					<div class="adrsDtls">
											<h1>A Bit of Offbeat Ladakh with an Adventure Tour</h1>
											<div class="ShareDropdown">		
					<div class="copyLinkPopup">Link Copied</div>	  
					<span class="data"><i class="fa fa-share-alt xxlarge vam"></i></span>
					<ul class="shareList data bdr0">
					<li><a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm" class="facebook" title="Facebook"><i class="fa fa-facebook-official"></i></a></li> 
					<li><a target="_blank" href="https://www.instagram.com/?url=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm" class="instagram" title="Instagram"><i class="fa fa-instagram"></i></a></li>
					<li><a target="_blank" href="https://wa.me/?text=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm" class="whatsapp" title="Whatsapp"><i class="fa fa fa-whatsapp"></i></a></li>  
					<li><a target="_blank" href="https://twitter.com/intent/tweet?text=A Bit of Offbeat Ladakh with an Adventure Tour&url=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm" class="twitter" title="Twitter"><img src="https://catalog.wlimg.com/mobile/social-networking-img/1002.svg" alt="Twitter" style="width:22px;height:22px;vertical-align:middle;margin-right:6px;"></a></li> 
					<li><a target="_blank" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm&title=A Bit of Offbeat Ladakh with an Adventure Tour" class="linkedin" title="Linkedin"><i class="fa fa-linkedin-square"></i></a></li>
					<li><a target="_blank" href="https://pinterest.com/pin/create/button/?url=https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm&description=A Bit of Offbeat Ladakh with an Adventure Tour" class="pinterest" title="Pinterest"><i class="fa fa-pinterest-square"></i></a></li>
					<li><a href="javascript:;" title="Copy Link" class="copy" onclick="copyURL()"><i class="fa fa-clone"></i></a></li>
					</ul>
					</div>
					</div>
					<script>
					$(document).ready(function(){
					$('.ShareDropdown span').click(function(){
					 $('.ShareDropdown').toggleClass("active");
					}); 
					});
					</script>
					<script>
					  function copyURL() {
					    const url = window.location.href;
						const textarea = document.createElement("textarea");
						textarea.value = url;
						textarea.style.position = "fixed";
						document.body.appendChild(textarea);
						textarea.focus();
						textarea.select();
				
						try {
						  document.execCommand("copy");
						//  alert("URL copied (fallback)!");
						  $(".copyLinkPopup").show();		 
				          setTimeout(function(){$(".copyLinkPopup").hide();}, 2000);
					      $('.ShareDropdown').removeClass("active");
						  
						} catch (err) {
						  console.error("Fallback copy failed:", err);
						}
				
						document.body.removeChild(textarea);
					  }
					</script>
											<p class="mb5px"><b>Tour Code :</b> Amazing Leh Ladakh 0</p>
												<p class="mb5px"><b>Duration :</b> 
						12 Nights / 13 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Leh Ladakh, Leh Palace, Pangong Lake</p>
												<p class="mb5px"><b>Tour Activities :</b> Lakes & Rivers</p>
												<div class="fo mt20px mb20px ac large">
              			<p class="fw6 dif">Price on Request</span></p>
              			</div>
											<div class="ac">
					<form class="inquiry-form" name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.goodwillholidays.in/enquiry-form-10028.htm">
					<input type="hidden" name="subject" value="A Bit of Offbeat Ladakh with an Adventure Tour - Tour Package"/>
					<input type="hidden" name="allocate_type" value="tour"/>							
					<input type="hidden" name="pkg_slno" value="33662"/>
					</form>
					<a href="javascript:;" class="submit-inquiry button p10px20px c5px ts0 xlarge dib fw6">Inquire Now for Best Deals</a>
					
										</div>
					<br />
										</div>
	   				</div>
					</div>
													<section id="s1">
								<div class="data mt20px mb20px m_p25px lh2em">      
								<div class="xxlarge mb10px">
												   					<h2 class="fw7">Leh Ladakh, Leh Palace and Pangong Lake Tour Overview</h2>
				   													</div>
								<p class="large">					
								Any Airfare or Government Service tax (3.09%)<br />
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered<br />
Anything not specifically mentioned under the head Prices included.<br />
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary<br />
Guide fee, Camera fee & any monument Entrances<br />
Medical & Travel insurance<br />
Any changes you may choose to make during your tour<br />
Additional costs due to flight cancellation, road blocks etc								</p>
								</div>
								</section>
																<section id="s2" class="mt15px">
								<div class="data mb20px m_p25px">
		  						<div class="fw7 xxlarge">
		  										   					<h2 class="fw7">Leh Ladakh, Leh Palace and Pangong Lake Tour Itinerary</h2>
				   							  						</div>
					            <div class="tour-details-view mt22px">
					            
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 1</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px on"><a href="javascript:;" class="clickable db"><h3>Arrive Leh</h3>
										<span class="fr pr10px"><i class="fa fa-angle-up"></i></span></a>
										</div>
										<div class="pro-detail mb15px ">Arrival Leh Kushok Bakula Airport (This must be one of the Most Sensational Flights in the World. On a clear day from one side of the aircraft can be seen in the distance the peaks of K2, Nanga Parbat, Gasherbrum and on the other side of the aircraft, so close that you feel you could reach out and touch it, is the Nun Kun massif.) Upon arrival you will met by our representative and transfer to Hotel for Check in. Complete day for rest and leisure to acclimatize followed by Welcome tea or Coffee at the Hotel. Evening Visit to Leh Palace, Shanti Stupa & Leh Market. Overnight at Hotel.					
											<div class="mt10px"><b>Meals : </b> Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 2</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Leh (Excursion To Monasteries) </h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Post breakfast we visit Spituk Monastery, Built in 15th century during the reign of Grags ‘bum-lde, these new Gelug-pa monastery was built like fortress on the summit of crags and also visit Hall Of Fame near Leh is worth a visit for every citizen. It is a glorious museum constructed by Indian army. <br />
Post lunch we take a sightseeing tour visiting Sankar Gompa, located at a distance of approximately 3 km from the town of Leh, Leh Palace is one of the most captivating architectural ruins that attract the attention of the tourists almost immediately with its majestic setting at the edge of the Namgyal hill and overlooking the town and at once looks like a reminiscent of Lhasa's Potala Palace. <br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 3</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Leh (Excursion To Monasteries) Enroute Rafting On Indus River (Grade 2+)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">After an early breakfast we checkout from Hotel and Drive towards Leh – Kargil Highway, Starting our day with Rafting down the Indus from Phey To Nimoo: Second or third grade rafting starts from Phey around 12 Kms. from Leh towards Srinagar. Around 4 Kms. of fast and thrilling rafting has beautiful land scenery. The rafting finishes at Nimoo the confluence of Zanskar and Indus rivers. Perhaps this stretch is one of the most popular stretch as it is not too harsh and good for beginners.<br />
After Completing rafting at Nimoo continue with our jourmey to Sham Valley. 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. After visiting the Monastery you continue your drive along the River Indus to or Uletokpo or Tingmosgang enroute visiting 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. After visiting above places we drive further and check in at our camp / hotel for overnight stay.<br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 4</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>In Tingmosgang (Sham Valley)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Post breakfast we opt for any of the following sightseeing opportunities offered by Tingmosgang to the Palace 15 minutes walk, Tserkarmo 4 km, Khatsa Gonpa 10 Km, Tia village and Nunnery 8 Km. <br />
 <br />
The Camp / hotel is in a rural ethnic village, run by a Ladakhi traditional family, where you witness traditional family house, Ladakhi food, the hotel is sprawled over a vast area of apricot and apple groves rendering a relaxed and rejuvenating atmosphere for your holidays.<br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 5</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Sham Valley To Leh Via Lamayuru (180 Kms / 05 - 06 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Post breakfast you drive to the 11th Century Lamayuru Monastery enroute visiting the mesmerizing Moon Landscapes (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. On your return drive to Leh you first visit the Alchi Gompa. The complex of temples located within the village is the most celebrated of Ladakh’s monasteries and dates back to the 11th century. After visiting Alchi we drive back to Leh. Finally you arrive back at Leh for an overnight stay at your Hotel.<br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 6</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Leh - Chumathang - Tsomoriri (240 Kms / 06 - 07 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">In the morning leave for Tsomoriri Lake enroute visiting Shey Palace, The ancient capital of Ladakh & 3 Idiots Rancho School & further 5 Kms Driving through a picturesque landscape we reach Thiksey an impressive complex rising tier upon tier on a hill above the village. After visiting above two monasteries we drive further towards Chumathang, which is famous for medical hot spring and people visit to this place for medical bath. From here a short drive will take you to Mahey bridge, the main checking point to enter to this new area. On the way visit Sumdah village and another 55 kms drive will take you to Tsomoriri. <br />
The Tsomoriri Lake is located at 14,000 ft. near a small village of Korzok. Recently opened to foreigners due to the proximity of the Chinese boarder, the Changthang is a land of wilderness and magnificent landscapes, Tsomoriri Lake is also the breeding ground for numerous species of birds, like the bar headed goose, crested grebe, the Brahmini duck (ruddy sheldrake) and the brown-headed gull. The Tsomorir Lake is 8 kms wide and 28 kms long. Upon arrival we check in at our camp for overnight.<br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 7</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Tsomoriri To Tsokar (80 Kms / 3 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">In the morning visit Korzok village with its houses and its Gompa appearing like a mirage. The few barley fields at Korzok must be among the highest cultivation in the world. Late we check out from our hotel / Camp and drive to Tsokar, The nomadic people Changpas are most outstanding feature of this area. They can be seen moving from one place to other grazing herds of goats, sheep and yaks. Changpas pass their days with their animals and move with their flocks, their only wealth from pasture to pasture according to changing season. Their flocks, their yaks, and goat's hair furnish the raw material of which they make their ropes, their clothes and shoes. All day long men and women are busy milking, churning the milk into butter, making ropes, weaving mats and other fabrics. These people have been completely beyond the pale of all civilizing influences. Even towards the fag end of the twenty first century, they belong to a primitive pre-historic age, The Drive is scenic and Tsokar lake is one of the best. Upon arrival in Tsokar you check in at our pre-arranged Camp for overnight stay. 					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 8</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Tsokar - Tanglangla - Leh (153 Kms / 6 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">After a leisurly breakfast we checkout from our camp and drive to Leh. Upon arrival, Check in at our hotel in Leh for Overnight.					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 9</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Leh-Nubra Valley Via Khardung La 18,390 Ft. (120 Kms / 4 - 5 Hrs) </h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Post breakfast we drive to Nubra Valley. The road journey from Leh to Nubra Valley passes over Khardung La (The Highest Motorable Road In The World) at 5,602 Mtrs / 18,390 Ft, around 39 km from Leh. From the pass, one can see all the way south over the Indus valley to seemingly endless peaks and ridges of the Zanskar range, and north to the giants of the Saser massif. Nubra Valley is popularly known as Ldumra or the valley of flowers. It is situated in the north of Ladakh between the Karakoram and Ladakh ranges of the Himalayas. The average altitude of the valley is 10,000 Ft. above sea level. Upon arrival in Nubra we check in at our Camp / Hotel in Hunder for Overnight stay. In the evening you can walk around the tiny villages to see how the locals live in this part of the world. A visit to a Ladakhi home can be arranged. Overnight Stay at the Camp or Hotel.					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 10</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Nubra Valley - Leh (120 Kms / 4 - 5 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">After an early breakfast we check out from the Camp and drive to Hunder where you have opportunity to ride on a bacterian camel (double humped) amidst the sand dunes of this high altitude desert with snow capped mountains on the horizon. Between Hunder and Diskit you come across sand dunes besides the road. Seen in isolation you could well be amongst the sand dunes of the Thar Desert in Rajasthan. It is indeed a strange sight since immediately on the left of the road are rockymountains that characterize the Ladakhi landscape and in the distance can be seen snow-capped mountains. On the return stop at Diskit which is the headquarter town of Nubra Valley. Stroll around the bazaar observing the shops and local people going about their daily chores. Diskit is famous for 515 years old Buddhist Monastery, lying magnificently situated on a hilltop, facing the entire Valley. <br />
Later we drive back to Leh in the late afternoon via Khardungla Top. On arrival at Leh you will check in to your Hotel. In the afternoon you can rest and relax. <br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 11</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Leh To Pangong Lake (140 Kms / 4 - 5 Hrs - One Way)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">After an early breakfast we leave for Pangong Lake via  Changla Pass 5486 Mtrs. The long easy ascent takes you to Changla pass through its winding roads passing through Sakti Village. Stop at the Changla Pass for a quick photograph session and drive down to the village of Tangtse, where you can relax for a cup of tea. Leaving Tangtse for Pangong you pass through few small villages of Changthang and finally you can have a sudden view of the Pangong lake situated at 14,000 feet (4,267 m). This famous blue brackish Lake of Pangong is 5/6 Kms wide and over 133 Kms long with half of its running the other side of the "Indo China Border". One rarely feels so close to nature and environment and the scenery is unforgettable. After the success of 3 Idiots, this beautiful natural location has attracted more tourists from all over the world. Upon arrival we check in at our Camp Near Pangong lake. Dinner & Overnight at the Camp					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 12</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Pangong Lake To Leh (140 Kms / 6 Hrs)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Morning at leisure to explore the beauty of lake and later we drive back to leh enroute visiting Hemis Gompa, the largest monastic foundation of Drukpa Kagyu Order of Tibetan Buddhism. Drive further to Leh and check in at our hotel for Overnight <br />
In the evening you can stroll around the market place for some last minute souvenir shopping.<br />
					
											<div class="mt10px"><b>Meals : </b> Breakfast & Dinner</div>
										</div> 
										</div>  
			 							</div>
										<div class="iti-box large">
		   								<div class="dayIni dif lh15em">Day 13</div>
		   								<div class="iti-dtls lh18em"> 
   										<div class="sub-title large fw6 db bdrB bdreee pb7px mb10px "><a href="javascript:;" class="clickable db"><h3>Depart Leh (Fly Out)</h3>
										<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a>
										</div>
										<div class="pro-detail mb15px dn">Tour concludes. Goodwill Holidays thanks you for your patronage and ensures a punctual transfer to Domestic Airport to catch the flight for your onward Destination.					
											<div class="mt10px"><b>Meals : </b> Breakfast</div>
										</div> 
										</div>  
			 							</div>								</div>
								</div>
								<script>
								jQuery('.fancybox').fancybox();
								  jQuery(document).ready(function() {
								  jQuery('[data-fancybox]').fancybox({
								  thumbs : {
								  autoStart : true,
								  axis      : 'x'
								  }
								  });
								});
								</script>
								<script>
								jQuery(document).ready(function() {
								//jQuery('.pro-detail').css('display','none');
								jQuery(".sub-title").click(function(){
									var $this = jQuery(this);
									  jQuery('.w-title').addClass('h15px',400);
									  $this.find('.w-title').removeClass('h15px',400);
									  if($this.hasClass('on')){
										$this.removeClass('on');
										$this.next().slideUp();          	
									  } else {
										jQuery(".sub-title").removeClass('on');
										jQuery('.pro-detail').slideUp();
										$this.addClass('on');
										$this.next().slideDown(); 
									  }		  
									  if($this.find('i').hasClass('fa-angle-up')){
										$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
									  } else {
										$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
									  }
									});
								});
								</script>
								</section>
															<div class="xxlarge mt10px mb10px dib">
										   					<h2 class="fw7">More Details about Leh Ladakh, Leh Palace and Pangong Lake Tour</h2>
			   												</div>
															<section id="s3">
								<div class="data mb20px m_p25px large">
								<div class="mb7px"> 
								<p class="fw7 xxlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Hotel</li>
																						<li>Sightseeing</li>
																						<li>Transfers</li>
																			</ul>
								</div>
								</section> 
																<section id="s4">
								<div class="data mb20px m_p25px large">
								<div class="mb7px"> 
								<p class="fw7 xxlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Any Airfare or Government Service tax (3.09%)</li><li>
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered</li><li>
Anything not specifically mentioned under the head Prices included.</li><li>
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary</li><li>
Guide fee, Camera fee & any monument Entrances</li><li>
Medical & Travel insurance</li><li>
Any changes you may choose to make during your tour</li><li>
Additional costs due to flight cancellation, road blocks etc</li></ul>
								</div>
								</section>
																<section id="s5">
								<div class="data mb20px m_p25px large">          
								<div class="mb7px"> 
								<p class="fw7 xxlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
								</section>
														<section id="s6">
						<div class="data mb20px m_p25px large">             
						<div class="mb7px"> 
						<p class="fw7 xxlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>* 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.</li></ul>			
						</div>
						</section>
												<section id="s7">
						<div class="data mb20px m_p25px large">            
						<div class="mb7px"> 
						<p class="fw7 xxlarge mb10px dib">Packages by Theme</p>
						</div>
													<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/hill-station-holidays-catid.htm" title="Hill Stations & Valleys Tour Packages">Hill Stations & Valleys Tours</a></span>
														<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Tour Packages">Religious & Pilgrimage Tours</a></span>
														<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/forts-palaces-holidays-catid.htm" title="Forts and Palaces Tour Packages">Forts and Palaces Tours</a></span>
														<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/heritage-holidays-catid.htm" title="Heritage Tour Packages">Heritage Tours</a></span>
														<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/beach-islands-holidays-catid.htm" title="Beaches and Islands Tour Packages">Beaches and Islands Tours</a></span>
														<span class="dib p5px10px c2px bdr bdree mr7px mb7px "><a  href="https://www.goodwillholidays.in/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Tour Packages">Lakes & Rivers Tours</a></span>
													</div>
						</section>
												
						<div class="ac mb10px">
						<form class="inquiry-form" name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.goodwillholidays.in/enquiry-form-10028.htm">
						<input type="hidden" name="subject" value="A Bit of Offbeat Ladakh with an Adventure Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>							
						<input type="hidden" name="pkg_slno" value="33662"/>
						</form>
						<a href="javascript:;" class="submit-inquiry button p10px20px w150px fw6 large dib ttu ts0">Book Your Tour</a>
						</div>
											<div id="myModal" class="modal fade dn pf" role="dialog" style="z-index:9999;left:0;top:0%;width:100%;height:100%;background-color:rgba(0,0,0,0.6);overflow-x: hidden; overflow-y: auto;">
					    <!-- Modal content-->
					    <div style="max-width:380px;margin-top: 50px;min-height:400px;" class="modal-content data m0a p10px pr">
					      <div class="modal-header">
					        <a style="right:25px;top:25px;" class="pa b xxxlarge" data-dismiss="modal"><span class="xlarge">&times;</span></a>	        
					      </div>
					      <div class="modal-body">
					        <p>Loading...</p>
					      </div>
					      <div class="modal-footer">
					        
					      </div>
					    </div>
					</div>
					<script type="text/javascript">
						jQuery(document).ready(function(){
							jQuery(document).on("click", ".submit-inquiry" , function(e){e.stopPropagation()
								var form = jQuery(this).parent().find(".inquiry-form");
								if(form.length){
									jQuery.ajax({
										url: form.attr("action"),
										type: form.attr("method"),
										data:form.serialize(),
										crossDomain:true,
										success:function(res){
											jQuery("#myModal .modal-body").html(res);
										}
									});
								}
							});
							jQuery(document).on("click", "[data-dismiss=modal]", function(){
								jQuery("#myModal .modal-body").html("<p>Loading...</p>");
								jQuery("#myModal").hide();
							});
							jQuery(document).on("submit", "form[name=static_form]", function(e){				
								e.preventDefault();
								var isValidForm =static_inq_form_validate(jQuery(this).attr("form-id"));
								if(isValidForm == undefined){
									var form = jQuery(this);
									if(form.length){
										jQuery.ajax({
											url: form.attr("action"),
											type: form.attr("method"),
											data:form.serialize(),
											crossDomain:true,
											beforeSend:function(){
												jQuery("#myModal .modal-footer").html("");
											},
											success:function(res){
												jQuery("#myModal .modal-body").html(res);
												setTimeout(function(){
													jQuery("#myModal", document).hide();
													jQuery("#myModal .modal-body").html("<p>Loading...</p>");
													},2000)
											}
										});
									}
								}
							});
							var modal = jQuery("#myModal", document);
				
							jQuery(document).on("click", ".submit-inquiry" , function(){
							    modal.show();
							});
				
							window.onclick = function(event) {
							    if (jQuery(event.target) == modal) {
							        modal.css("display","none");
							    }
							}
						});
					</script>
									</div>
									<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
					<div class="column_Box mc rghtFix">
					<div class="tcl bullet data divider enqForm stickyForm">
					<div class="h h2 ac xxlarge theme2 p10px" style="color:#fff;"><b class="plusMinus"></b>
					Fill Enquiry Form Below
					</div>
					<div class="showHide_rp mt7px p10px">
					<form name="package_form" method="post" action="//catalog.tourtravelworld.com/catalog-enquiry.php" onsubmit="return static_inq_form_validate(10029);">
					<div class="fo">
					<div class="mb15px">
					<input type="text" name="dynFrm_contact_person" id="dynFrm_contact_person_10029" placeholder="Your Full Name" />
					<span class="red small"></span>
					</div>
					<div class="fl w100 mb15px">
					<textarea name="dynFrm_details_2" id="dynFrm_details_2_10029">I am interested in A Bit of Offbeat Ladakh with an Adventure Tour. Please get in contact with me.</textarea>
					<span class="fl red small"></span>
					</div>
					<div class="fl w100 mb15px df-dt">
					<div class="df-dtc w50 pr5px dateOpt pr"><input type="text" name="dynFrm_arrival_date" id="dynFrm_arrival_date_10029" class="dynFrm_arrival_date" style="padding-left:30px;" placeholder=" Departure Date" /><span class="fl red small"></span></div>
					<div class="df-dtc pl5px"><input type="text" name="dynFrm_duration" id="dynFrm_duration_10029" placeholder="Number of Days" /><span class="fl red small"></span></div>
					</div>  
					<div class="mb15px">
					<input type="text" name="dynFrm_email_id" id="dynFrm_email_id_10029" placeholder="Email" />
					<span class="red small"></span>
					</div> 
					<div class="mb20px fl w100">
					<div class="w60px pr fl ofh">
					<div id="isdpackCode" class="isdCode pr0px">+91</div>
					<select class="contSelect" name="dynFrm_country" id="dynFrm_country" onChange="document.getElementById('phone_package_isd').value=this.value.substr(3, 4); document.getElementById('isdpackCode').innerHTML=this.value.substr(3, 4);">
					
											
						<option value="AF^+93" >Afghanistan +93</option>
					
												
						<option value="CF^+236" >African Republic +236</option>
					
												
						<option value="AL^+355" >Albania +355</option>
					
												
						<option value="DZ^+213" >Algeria +213</option>
					
												
						<option value="AS^+0" >American Samoa +0</option>
					
												
						<option value="AD^+376" >Andorra +376</option>
					
												
						<option value="AO^+244" >Angola +244</option>
					
												
						<option value="AI^+264" >Anguilla +264</option>
					
												
						<option value="AG^+268" >Antigua and Barbuda +268</option>
					
												
						<option value="AR^+54" >Argentina +54</option>
					
												
						<option value="AM^+374" >Armenia +374</option>
					
												
						<option value="AW^+297" >Aruba +297</option>
					
												
						<option value="AU^+61" >Australia +61</option>
					
												
						<option value="AT^+43" >Austria +43</option>
					
												
						<option value="AZ^+994" >Azerbaijan +994</option>
					
												
						<option value="BS^+242" >Bahamas +242</option>
					
												
						<option value="BH^+973" >Bahrain +973</option>
					
												
						<option value="BD^+880" >Bangladesh +880</option>
					
												
						<option value="BB^+246" >Barbados +246</option>
					
												
						<option value="BY^+375" >Belarus +375</option>
					
												
						<option value="BE^+32" >Belgium +32</option>
					
												
						<option value="BZ^+501" >Belize +501</option>
					
												
						<option value="BJ^+229" >Benin +229</option>
					
												
						<option value="BM^+441" >Bermuda +441</option>
					
												
						<option value="BT^+975" >Bhutan +975</option>
					
												
						<option value="BO^+591" >Bolivia +591</option>
					
												
						<option value="BA^+387" >Bosnia and Herzegovina +387</option>
					
												
						<option value="BW^+267" >Botswana +267</option>
					
												
						<option value="BV^+47" >Bouvet +47</option>
					
												
						<option value="BR^+55" >Brazil +55</option>
					
												
						<option value="BN^+673" >Brunei +673</option>
					
												
						<option value="BG^+359" >Bulgaria +359</option>
					
												
						<option value="BF^+226" >Burkina +226</option>
					
												
						<option value="BF^+0" >Burkina Faso +0</option>
					
												
						<option value="BI^+257" >Burundi +257</option>
					
												
						<option value="KH^+855" >Cambodia +855</option>
					
												
						<option value="CM^+237" >Cameroon +237</option>
					
												
						<option value="CA^+1" >Canada +1</option>
					
												
						<option value="CV^+238" >Cape Verde +238</option>
					
												
						<option value="KY^+345" >Cayman Islands +345</option>
					
												
						<option value="236^+236" >Central African Republic +236</option>
					
												
						<option value="TD^+235" >Chad +235</option>
					
												
						<option value="IO^+246" >Chagos +246</option>
					
												
						<option value="CL^+56" >Chile +56</option>
					
												
						<option value="CN^+86" >China +86</option>
					
												
						<option value="CX^+61" >Christmas Island +61</option>
					
												
						<option value="CC^+61" >Cocos +61</option>
					
												
						<option value="CO^+57" >Colombia +57</option>
					
												
						<option value="KM^+269" >Comoros +269</option>
					
												
						<option value="CG^+242" >Congo +242</option>
					
												
						<option value="CK^+682" >Cook Islands +682</option>
					
												
						<option value="RCI^+506" >Costa Rica +506</option>
					
												
						<option value="HR^+385" >Croatia +385</option>
					
												
						<option value="CY^+357" >Cyprus +357</option>
					
												
						<option value="CZ^+420" >Czech Republic +420</option>
					
												
						<option value="DK^+45" >Denmark +45</option>
					
												
						<option value="DJ^+253" >Djibouti +253</option>
					
												
						<option value="DM^+767" >Dominica +767</option>
					
												
						<option value="DO^+809" >Dominican Republic +809</option>
					
												
						<option value="TP^+670" >East Timor +670</option>
					
												
						<option value="EC^+593" >Ecuador +593</option>
					
												
						<option value="EG^+20" >Egypt +20</option>
					
												
						<option value="SV^+503" >El Salvador +503</option>
					
												
						<option value="GQ^+0" >Equatorial Guinea +0</option>
					
												
						<option value="ER^+291" >Eritrea +291</option>
					
												
						<option value="EE^+372" >Estonia +372</option>
					
												
						<option value="ET^+251" >Ethiopia +251</option>
					
												
						<option value="FO^+298" >Faroe +298</option>
					
												
						<option value="FM^+691" >Federated States of Micronesia +691</option>
					
												
						<option value="FJ^+679" >Fiji +679</option>
					
												
						<option value="FI^+358" >Finland +358</option>
					
												
						<option value="FR^+33" >France +33</option>
					
												
						<option value="FX^+590" >France, Metropolitan +590</option>
					
												
						<option value="GF^+594" >French Guiana +594</option>
					
												
						<option value="FP^+689" >French Polynesia +689</option>
					
												
						<option value="TF^+590" >French Southern Territories +590</option>
					
												
						<option value="GA^+241" >Gabon +241</option>
					
												
						<option value="GM^+220" >Gambia +220</option>
					
												
						<option value="GE^+995" >Georgia +995</option>
					
												
						<option value="DE^+49" >Germany +49</option>
					
												
						<option value="GH^+233" >Ghana +233</option>
					
												
						<option value="GI^+350" >Gibraltar +350</option>
					
												
						<option value="GR^+30" >Greece +30</option>
					
												
						<option value="GL^+299" >Greenland +299</option>
					
												
						<option value="GD^+809" >Grenada +809</option>
					
												
						<option value="Gre^+473" >Grenada +473</option>
					
												
						<option value="GP^+590" >Guadeloupe +590</option>
					
												
						<option value="GU^+1" >Guam +1</option>
					
												
						<option value="GT^+502" >Guatemala +502</option>
					
												
						<option value="GN^+224" >Guinea +224</option>
					
												
						<option value="GW^+245" >Guinea-bissau +245</option>
					
												
						<option value="GY^+592" >Guyana +592</option>
					
												
						<option value="HT^+509" >Haiti +509</option>
					
												
						<option value="HM^+61" >Heard and Mc Donald Islands +61</option>
					
												
						<option value="HN^+504" >Honduras +504</option>
					
												
						<option value="HU^+36" >Hungary +36</option>
					
												
						<option value="IS^+354" >Iceland +354</option>
					
												
						<option value="IN^+91"  selected="selected" >India +91</option>
					
												
						<option value="ID^+62" >Indonesia +62</option>
					
												
						<option value="IQ^+964" >Iraq +964</option>
					
												
						<option value="IE^+353" >Ireland +353</option>
					
												
						<option value="Isi^Isiolo" >Isiolo Isiolo</option>
					
												
						<option value="IL^+972" >Israel +972</option>
					
												
						<option value="IT^+39" >Italy +39</option>
					
												
						<option value="CI^+225" >Ivory Coast +225</option>
					
												
						<option value="JM^+876" >Jamaica +876</option>
					
												
						<option value="JP^+81" >Japan +81</option>
					
												
						<option value="JO^+962" >Jordan +962</option>
					
												
						<option value="KZ^+7" >Kazakhstan +7</option>
					
												
						<option value="KE^+254" >Kenya +254</option>
					
												
						<option value="KI^+686" >Kiribati +686</option>
					
												
						<option value="KW^+965" >Kuwait +965</option>
					
												
						<option value="KG^+996" >Kyrgyzstan +996</option>
					
												
						<option value="LA^+856" >Lao People's Democratic Republic +856</option>
					
												
						<option value="LA^+856" >Laos +856</option>
					
												
						<option value="LV^+371" >Latvia +371</option>
					
												
						<option value="LB^+961" >Lebanon +961</option>
					
												
						<option value="LS^+266" >Lesotho +266</option>
					
												
						<option value="LR^+231" >Liberia +231</option>
					
												
						<option value="LY^+218" >Libya +218</option>
					
												
						<option value="LI^+423" >Liechtenstein +423</option>
					
												
						<option value="LT^+370" >Lithuania +370</option>
					
												
						<option value="LU^+352" >Luxembourg +352</option>
					
												
						<option value="MO^+853" >Macau +853</option>
					
												
						<option value="MK^+389" >Macedonia +389</option>
					
												
						<option value="MG^+261" >Madagascar +261</option>
					
												
						<option value="MW^+265" >Malawi +265</option>
					
												
						<option value="MY^+60" >Malaysia +60</option>
					
												
						<option value="MV^+960" >Maldives +960</option>
					
												
						<option value="ML^+223" >Mali +223</option>
					
												
						<option value="MT^+356" >Malta +356</option>
					
												
						<option value="FK^+500" >Malvinas +500</option>
					
												
						<option value="MH^+692" >Marshall Islands +692</option>
					
												
						<option value="MQ^+596" >Martinique +596</option>
					
												
						<option value="MR^+222" >Mauritania +222</option>
					
												
						<option value="MU^+230" >Mauritius +230</option>
					
												
						<option value="YT^+269" >Mayotte +269</option>
					
												
						<option value="MX^+52" >Mexico +52</option>
					
												
						<option value="MD^+0" >Moldova +0</option>
					
												
						<option value="MD^+373" >Moldova (Republic of Moldova) +373</option>
					
												
						<option value="MC^+377" >Monaco +377</option>
					
												
						<option value="MN^+976" >Mongolia +976</option>
					
												
						<option value="ME^+381" >Montenegro +381</option>
					
												
						<option value="MS^+664" >Montserrat +664</option>
					
												
						<option value="MA^+212" >Morocco +212</option>
					
												
						<option value="MZ^+258" >Mozambique +258</option>
					
												
						<option value="MM^+95" >Myanmar +95</option>
					
												
						<option value="NA^+264" >Namibia +264</option>
					
												
						<option value="NR^+674" >Nauru +674</option>
					
												
						<option value="NP^+977" >Nepal +977</option>
					
												
						<option value="NL^+31" >Netherlands +31</option>
					
												
						<option value="AN^+599" >Netherlands Antilles +599</option>
					
												
						<option value="NC^+687" >New Caledonia +687</option>
					
												
						<option value="PG^+675" >New Guinea +675</option>
					
												
						<option value="NZ^+64" >New Zealand +64</option>
					
												
						<option value="NI^+505" >Nicaragua +505</option>
					
												
						<option value="NE^+227" >Niger +227</option>
					
												
						<option value="NG^+234" >Nigeria +234</option>
					
												
						<option value="NU^+683" >Niue +683</option>
					
												
						<option value="NF^+672" >Norfolk Island +672</option>
					
												
						<option value="MP^+670" >Northern Mariana Islands +670</option>
					
												
						<option value="NO^+47" >Norway +47</option>
					
												
						<option value="OM^+968" >Oman +968</option>
					
												
						<option value="PK^+92" >Pakistan +92</option>
					
												
						<option value="PW^+680" >Palau +680</option>
					
												
						<option value="PA^+507" >Panama +507</option>
					
												
						<option value="PG^+0" >Papua New Guinea +0</option>
					
												
						<option value="PY^+595" >Paraguay +595</option>
					
												
						<option value="PE^+51" >Peru +51</option>
					
												
						<option value="PH^+63" >Philippines +63</option>
					
												
						<option value="PN^+872" >Pitcairn +872</option>
					
												
						<option value="PL^+48" >Poland +48</option>
					
												
						<option value="PF^+689" >Polynesia +689</option>
					
												
						<option value="PT^+351" >Portugal +351</option>
					
												
						<option value="PR^+1-787" >Puerto Rico +1-787</option>
					
												
						<option value="QA^+974" >Qatar +974</option>
					
												
						<option value="RE^+262" >Reunion +262</option>
					
												
						<option value="RO^+40" >Romania +40</option>
					
												
						<option value="RU^+7" >Russia +7</option>
					
												
						<option value="RW^+250" >Rwanda +250</option>
					
												
						<option value="KN^+869" >Saint Kitts and Nevis +869</option>
					
												
						<option value="LC^+758" >Saint Lucia +758</option>
					
												
						<option value="VC^+784" >Saint Vincent and the Grenadines +784</option>
					
												
						<option value="WS^+685" >Samoa +685</option>
					
												
						<option value="SM^+378" >San Marino +378</option>
					
												
						<option value="ST^+239" >Sao Tome And Principe +239</option>
					
												
						<option value="SA^+966" >Saudi Arabia +966</option>
					
												
						<option value="SN^+221" >Senegal +221</option>
					
												
						<option value="RS^+381" >Serbia +381</option>
					
												
						<option value="SC^+248" >Seychelles +248</option>
					
												
						<option value="SL^+232" >Sierra Leone +232</option>
					
												
						<option value="SG^+65" >Singapore +65</option>
					
												
						<option value="SK^+421" >Slovakia +421</option>
					
												
						<option value="SI^+386" >Slovenia +386</option>
					
												
						<option value="SB^+677" >Solomon Islands +677</option>
					
												
						<option value="SO^+252" >Somalia +252</option>
					
												
						<option value="ZA^+27" >South Africa +27</option>
					
												
						<option value="GS^+44" >South Georgia and the South Sandwich Islands +44</option>
					
												
						<option value="KR^+82" >South Korea +82</option>
					
												
						<option value="ES^+34" >Spain +34</option>
					
												
						<option value="LK^+94" >Sri Lanka +94</option>
					
												
						<option value="SH^+290" >St. Helena +290</option>
					
												
						<option value="PM^+508" >St. Pierre and Miquelon +508</option>
					
												
						<option value="SD^+249" >Sudan +249</option>
					
												
						<option value="SR^+597" >Suriname +597</option>
					
												
						<option value="SJ^+47" >Svalbard and Jan Mayen Islands +47</option>
					
												
						<option value="SZ^+268" >Swaziland +268</option>
					
												
						<option value="SE^+46" >Sweden +46</option>
					
												
						<option value="CH^+41" >Switzerland +41</option>
					
												
						<option value="TW^+886" >Taiwan +886</option>
					
												
						<option value="TJ^+7" >Tajikistan +7</option>
					
												
						<option value="TZ^+255" >Tanzania +255</option>
					
												
						<option value="TH^+66" >Thailand +66</option>
					
												
						<option value="TG^+228" >Togo +228</option>
					
												
						<option value="TK^+64" >Tokelau +64</option>
					
												
						<option value="TO^+676" >Tonga +676</option>
					
												
						<option value="TT^+868" >Trinidad and Tobago +868</option>
					
												
						<option value="TN^+216" >Tunisia +216</option>
					
												
						<option value="TR^+90" >Turkey +90</option>
					
												
						<option value="TM^+993" >Turkmenistan +993</option>
					
												
						<option value="TC^+649" >Turks and Caicos Islands +649</option>
					
												
						<option value="TV^+688" >Tuvalu +688</option>
					
												
						<option value="AE^+971" >UAE +971</option>
					
												
						<option value="UG^+256" >Uganda +256</option>
					
												
						<option value="UA^+380" >Ukraine +380</option>
					
												
						<option value="UK^+44" >United Kingdom +44</option>
					
												
						<option value="UM^+1" >United States Minor Outlying Islands +1</option>
					
												
						<option value="UY^+598" >Uruguay +598</option>
					
												
						<option value="US^+1" >USA +1</option>
					
												
						<option value="UZ^+998" >Uzbekistan +998</option>
					
												
						<option value="VU^+678" >Vanuatu +678</option>
					
												
						<option value="VA^+0" >Vatican City +0</option>
					
												
						<option value="VA^+39" >Vatican City State (Holy See) +39</option>
					
												
						<option value="VE^+58" >Venezuela +58</option>
					
												
						<option value="VN^+84" >Vietnam +84</option>
					
												
						<option value="VG^+1" >Virgin Islands (British) +1</option>
					
												
						<option value="VI^+1" >Virgin Islands (U.S.) +1</option>
					
												
						<option value="WF^+681" >Wallis and Futuna Islands +681</option>
					
												
						<option value="EH^+212" >Western Sahara +212</option>
					
												
						<option value="YE^+967" >Yemen +967</option>
					
												
						<option value="YU^+381" >Yugoslavia +381</option>
					
												
						<option value="ZR^+243" >Zaire +243</option>
					
												
						<option value="ZM^+260" >Zambia +260</option>
					
												
						<option value="ZW^+263" >Zimbabwe +263</option>
					
											</select>
					</div>									
					<input type="text" name="dynFrm_phone" id="dynFrm_phone_10029" class="fl" style="width:calc(100% - 62px);" placeholder="Mobile No" />
					<span class="fl red small"></span>
					</div>					
										
					<div class="mb5px ac">
					<input type="submit" name="submit" value="Send Enquiry" class="dib theme1 p12px bdr fw6">
					<input type="hidden" name="phone_isd" id="phone_package_isd" value="+91">
					<input type="hidden" name="subject" value="A Bit of Offbeat Ladakh with an Adventure Tour - Tour Package"/>
					<input type="hidden" name="allocate_type" value="tour"/>
					<input type="hidden" name="pkg_slno" value="33662"/>
					<input type="hidden" name="current_url" value="https://www.goodwillholidays.in/tour-packages/a-bitof-offbeat-ladakh-withan-adventure-tour.htm">
				  	<input type="hidden" name="web_address" value="https://www.goodwillholidays.in">
				  	<input type="hidden" name="inq_thanks_msg" value="Thank you for inquiry.<br /><br />We have received your request. Our Sales Team will soon get in touch with you.<br /><br /><br />">
					<input type="hidden" name="inq_thanks_title" value="Enquiry">
				  	<input type="hidden" name="redirected_url" value="https://www.goodwillholidays.in/thanks.htm">
					<input type="hidden" name="catalog_mi" value="240328">
				  	<input type="hidden" name="id" value="static_form">
				  	<input type="hidden" name="form_id" value="10029">
					</form>
					</div>
					</div>					
					</div>
					</div>
					<style>
					.ui-datepicker-trigger {
						vertical-align : middle;
					}
					</style>
					<script>
					jQuery('.dynFrm_arrival_date').datepicker({minDate: 0,
					buttonImage: '//catalog.wlimg.com/jquery-date-picker/calbtn.gif',
					buttonText: 'Click to view calendar',
				    buttonImageOnly: true,
				    showOn: 'button',
				    changeMonth: true,
				    changeYear: true,
				    onClose: function(dateText, inst) {
				        var endDateTextBox = jQuery('.dynFrm_departure_date');
				        if (endDateTextBox.val() != '') {
				            var testStartDate = new Date(dateText);
				            var testEndDate = new Date(endDateTextBox.val());
				            if (testStartDate > testEndDate)
				                endDateTextBox.val(dateText);
				        }
				    }, 
					    onSelect: function (selectedDateTime){
					        var start = jQuery(this).datepicker('getDate');
					        jQuery('.dynFrm_departure_date').datepicker('option', 'minDate', new Date(start.getTime()));
					        jQuery('#dynFrm_departure_date').datepicker('option', 'minDate', new Date(start.getTime()));
					    }    
					});
					jQuery('.dynFrm_departure_date').datepicker({
					minDate: 0,
					buttonImage: '//catalog.wlimg.com/jquery-date-picker/calbtn.gif',
					buttonText: 'Click to view calendar',
				    buttonImageOnly: true,
				    showOn: 'button',
				    changeMonth: true,
				    changeYear: true,
				    onClose: function(dateText, inst) {
				        var startDateTextBox = jQuery('.dynFrm_arrival_date');
				        if (startDateTextBox.val() != '') {
				            var testStartDate = new Date(startDateTextBox.val());
				            var testEndDate = new Date(dateText);
				            if (testStartDate > testEndDate)
				                startDateTextBox.val(dateText);
				        }
				    },
				    onSelect: function (selectedDateTime){
				        var end = jQuery(this).datepicker('getDate');
				        jQuery('.dynFrm_arrival_date').datepicker('option', 'maxDate', new Date(end.getTime()) );
				        jQuery('#dynFrm_arrival_date').datepicker('option', 'maxDate', new Date(end.getTime()) );
				    }
					});
					</script>
					<script>
					jQuery(document).ready(function(){
					var sticky = jQuery('.stickyForm').offset().top;
					jQuery(window).scroll(function(){      
					 if(jQuery(window).scrollTop() > sticky){
					  jQuery('.stickyForm').css('position','fixed');
					  jQuery('.stickyForm').css('top','75px'); 
					 }
					 else if (jQuery(window).scrollTop() <= sticky) {
					  jQuery('.stickyForm').css('position','');
					  jQuery('.stickyForm').css('top','');
					 }  
					if (jQuery('.stickyForm').offset().top + jQuery(".stickyForm").height() > jQuery(".rel-prop").offset().top) {
					  jQuery('.stickyForm').css('top',-(jQuery(".stickyForm").offset().top + jQuery(".stickyForm").height() - jQuery(".rel-prop").offset().top));
					}
					});
					});
					</script>
					<script>
					jQuery(document).ready(function(e){
					if (jQuery(window).width() < 992) {
					jQuery(".rghtFix .enqForm .h").on("click", function(){
					  jQuery(this).find('.plusMinus').toggleClass('act').parent().next('.showHide_rp').slideToggle('slow');
					});  
					jQuery(".rghtFix .enqForm .plusMinus").on("click", function(e){
					e.stopPropagation(); 
					});
					}
					});  
					</script>
					</div>
					</div>
									
				
				</div>
				
										<section class="pt30px pb10px relTour-pkg rel-prop">
						<div class="wrap">      
						<div class="fo">
						<div class="ac mb7px"><div><h2 class="hd_NT">Similar Tour Packages for Leh Ladakh</h2></div></div>
						<div class="ic" id="1102_3-1">
						<div class="slider">
						<ul class="expl-carousel1">
											
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-incentive-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69439.jpg"  height=""  width=""    alt="Ladakh Incentive Tour" title="Ladakh Incentive Tour"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-incentive-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								13 Nights / 14 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-incentive-tour1.htm" title="Ladakh Incentive Tour"><h3>Ladakh Incentive Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/fly-ladakh-every-day-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/41002.jpg"  height=""  width=""    alt="Fly Ladakh Every Day Tour" title="Fly Ladakh Every Day Tour"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/fly-ladakh-every-day-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								7 Nights / 8 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/fly-ladakh-every-day-tour1.htm" title="Fly Ladakh Every Day Tour"><h3>Fly Ladakh Every Day Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-group-departure1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/68256.jpg"  height=""  width=""    alt="Ladakh Group Departure" title="Ladakh Group Departure"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-group-departure1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								11 Nights / 12 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-group-departure1.htm" title="Ladakh Group Departure"><h3>Ladakh Group Departure</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-with-nubra-valley-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69291.jpg"  height=""  width=""    alt="Ladakh with Nubra Valley Tour" title="Ladakh with Nubra Valley Tour"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-with-nubra-valley-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								5 Nights / 6 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-with-nubra-valley-tour1.htm" title="Ladakh with Nubra Valley Tour"><h3>Ladakh With Nubra Valley Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/julley-ladakh-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69288.jpg"  height=""  width=""    alt="Julley Ladakh Tour" title="Julley Ladakh Tour"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/julley-ladakh-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								5 Nights / 6 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/julley-ladakh-tour1.htm" title="Julley Ladakh Tour"><h3>Julley Ladakh Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-calling-package.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69343.jpg"  height=""  width=""    alt="Ladakh Calling Package" title="Ladakh Calling Package"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-calling-package.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								6 Nights / 7 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-calling-package.htm" title="Ladakh Calling Package"><h3>Ladakh Calling Package</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-topof-the-world-package.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://static.tourtravelworld.com/images/tour-package-no-image.gif"  height=""  width=""    alt="Ladakh - Top of the World Package" title="Ladakh - Top of the World Package"  class="bdr p1px" loading="lazy" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-topof-the-world-package.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								3 Nights / 4 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-topof-the-world-package.htm" title="Ladakh - Top of the World Package"><h3>Ladakh - Top Of The World Package</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/amazing-ladakh-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://static.tourtravelworld.com/images/tour-package-no-image.gif"  height=""  width=""    alt="Amazing Ladakh Tour" title="Amazing Ladakh Tour"  class="bdr p1px" loading="lazy" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/amazing-ladakh-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								6 Nights / 7 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/amazing-ladakh-tour1.htm" title="Amazing Ladakh Tour"><h3>Amazing Ladakh Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/wavesof-ladakh-tour.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69335.jpg"  height=""  width=""    alt="Waves of Ladakh Tour" title="Waves of Ladakh Tour"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/wavesof-ladakh-tour.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								5 Nights / 6 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/wavesof-ladakh-tour.htm" title="Waves of Ladakh Tour"><h3>Waves Of Ladakh Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/highlightsof-ladakh-tour.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://static.tourtravelworld.com/images/tour-package-no-image.gif"  height=""  width=""    alt="Highlights of Ladakh Tour" title="Highlights of Ladakh Tour"  class="bdr p1px" loading="lazy" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/highlightsof-ladakh-tour.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								9 Nights / 10 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/highlightsof-ladakh-tour.htm" title="Highlights of Ladakh Tour"><h3>Highlights Of Ladakh Tour</h3></a></div>
							</div>
							</div>						
							</li>
												
							<li>
							<div class="dib w200px">
  							<div class="dib pr ofh lh0 c5px cp" onclick="location.href='https://www.goodwillholidays.in/tour-packages/ladakh-odyssey-tour1.htm'">
															<div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/240328/69287.jpg"  height=""  width=""    alt="Amazing Leh" title="Amazing Leh"  class="bdr p1px" ></div></div>
								<div class="absViewBtn"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-odyssey-tour1.htm" class="dib buttonBig p5px15px lh12em c20px">View Packages</a></div>
															</div>
							<div class="al">
															<p class="mt5px alpha75">
								4 Nights / 5 Days 
								</p>
															<div class="h large lh12em mt7px"><a href="https://www.goodwillholidays.in/tour-packages/ladakh-odyssey-tour1.htm" title="Ladakh Odyssey Tour"><h3>Ladakh Odyssey Tour</h3></a></div>
							</div>
							</div>						
							</li>
															
						</ul>
						</div>
						</div> 
						 
								<script>
								$(document).ready(function() {
								var tnsCarousel = $('.expl-carousel1');
								tnsCarousel.each(function() {
								var tnsSlider = tns({
								 'container': '.expl-carousel1',
								 'axis': 'horizontal',
								  'speed': '2000',						  
								  'autoplay': true,
								  'slideBy': '1',
								  'autoplayDirection':'forward', 
								  'nav': false,	
								  'autoplayHoverPause': true,
								  'autoplayTimeout': 3000,
								  'autoplayButtonOutput': false,
								  'autoplayResetOnVisibility': false,
								  'gutter': 10,
								  'controls' : true,
								  'mouseDrag': true,
								  responsive: {
									0: {
										items: 1
									  },
									  480: {
										items: 2
									  },
									  640: {
										items: 2
									  },
									  768: {
										items: 3
									  },
									  992: {
										items: 4
									  },
									  1024: {
										items: 4
									  },
									  1200: {
										items: 5
									  }
								  },
								  'swipeAngle': false
								});
								});
								});
								</script>
															  
						 </div>
					     </div>
					    </section>
										<section class="pt20px pb20px absTour-Title rel-prop">
				<div class="wrap">
				<div class="fo">     	
				<div class="ac mb7px"><div><h2 class="hd_NT">Explore Tour Packages by Destination</h2></div></div>     	
				<div class="ic" id="1102_3-1">
				<div class="slider">
				<ul class="expl-carousel">								
				
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-srinagar.htm" title="Packages in Srinagar" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10078-classified.jpg"  height=""  width=""    alt="Srinagar" title="Srinagar" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-srinagar.htm" title="Packages in Srinagar">Srinagar Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-leh-ladakh.htm" title="Packages in Leh Ladakh" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/11219-classified.jpg"  height=""  width=""    alt="Leh Ladakh" title="Leh Ladakh" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-leh-ladakh.htm" title="Packages in Leh Ladakh">Leh Ladakh Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-gulmarg.htm" title="Packages in Gulmarg" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/11225-classified.jpg"  height=""  width=""    alt="Gulmarg" title="Gulmarg" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-gulmarg.htm" title="Packages in Gulmarg">Gulmarg Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-manali.htm" title="Packages in Manali" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10061-classified.jpg"  height=""  width=""    alt="Manali" title="Manali" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-manali.htm" title="Packages in Manali">Manali Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-pahalgam.htm" title="Packages in Pahalgam" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10631-classified.jpg"  height=""  width=""    alt="Pahalgam" title="Pahalgam" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-pahalgam.htm" title="Packages in Pahalgam">Pahalgam Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-new-delhi.htm" title="Packages in New Delhi" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10009-classified.jpg"  height=""  width=""    alt="New Delhi" title="New Delhi" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-shimla.htm" title="Packages in Shimla" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10070-classified.jpg"  height=""  width=""    alt="Shimla" title="Shimla" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-shimla.htm" title="Packages in Shimla">Shimla Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-dubai.htm" title="Packages in Dubai" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/11418-classified.jpg"  height=""  width=""    alt="Dubai" title="Dubai" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-dubai.htm" title="Packages in Dubai">Dubai Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-sonamarg.htm" title="Packages in Sonamarg" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10633-classified.jpg"  height=""  width=""    alt="Sonamarg" title="Sonamarg" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-sonamarg.htm" title="Packages in Sonamarg">Sonamarg Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-kullu.htm" title="Packages in Kullu" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10059-classified.jpg"  height=""  width=""    alt="Kullu" title="Kullu" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-kullu.htm" title="Packages in Kullu">Kullu Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-katra.htm" title="Packages in Katra" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/10075-classified.jpg"  height=""  width=""    alt="Katra" title="Katra" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-katra.htm" title="Packages in Katra">Katra Tours</a></div>
					</div> 
					</li>
					
					<li>
					<div class="dib pr ofh lh0 c5px"><div class="imgFrame m0a dib w200px h200px"><div class="imgFrame picBg dtc ac vam lh0 w200px h200px">
					<a href="https://www.goodwillholidays.in/packages-in-colombo.htm" title="Packages in Colombo" >
					<img src="https://dynamic.tourtravelworld.com/zsc-header/11245-classified.jpg"  height=""  width=""    alt="Colombo" title="Colombo" ></a>
					</div></div>
					<div class="h xlarge fw6 lh15em"><a href="https://www.goodwillholidays.in/packages-in-colombo.htm" title="Packages in Colombo">Colombo Tours</a></div>
					</div> 
					</li>
									</ul>
				</div>
				</div>
				 
						<script>
						$(document).ready(function() {
						var tnsCarousel = $('.expl-carousel');
						tnsCarousel.each(function() {
						var tnsSlider = tns({
						 'container': '.expl-carousel',
						 'axis': 'horizontal',
						  'speed': '2000',						  
						  'autoplay': true,
						  'slideBy': '1',
						  'autoplayDirection':'forward', 
						  'nav': false,	
						  'autoplayHoverPause': true,
						  'autoplayTimeout': 3000,
						  'autoplayButtonOutput': false,
						  'autoplayResetOnVisibility': false,
						  'gutter': 10,
						  'controls' : true,
						  'mouseDrag': true,
						  responsive: {
							0: {
								items: 1
							  },
							  480: {
								items: 2
							  },
							  640: {
								items: 2
							  },
							  768: {
								items: 3
							  },
							  992: {
								items: 4
							  },
							  1024: {
								items: 4
							  },
							  1200: {
								items: 5
							  }
						  },
						  'swipeAngle': false
						});
						});
						});
						</script>
										
				</div>
				</div>
				</section>
				
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:87:"Book A Bit of Offbeat Ladakh with an Adventure Tour - 12 Nights / 13 Days Tour Packages";i:2;s:169:"book a bit of offbeat ladakh with an adventure tour - 12 nights / 13 days tour packages, lakes & rivers tour packages, leh ladakh, leh palace, pangong lake tour packages";i:3;s:220:"Book A Bit of Offbeat Ladakh with an Adventure Tour - 12 Nights / 13 Days tour packages from Goodwill Holidays - Get attractive 12 Nights / 13 Days Lakes & Rivers  tour packages for  Leh Ladakh, Leh Palace, Pangong Lake.";i:4;s:933:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Leh Ladakh, Leh Palace, Pangong Lake"        
		                 },
		      "description": "Any Airfare or Government Service tax (3.09%)
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered
Anything not specifically mentioned under the head Prices included.
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary
Guide fee, Camera fee & any monument Entrances
Medical & Travel insurance
Any changes you may choose to make during your tour
Additional costs due to flight cancellation, road blocks etc",
		      "name": "A Bit of Offbeat Ladakh with an Adventure Tour",
		      "telephone": "+91-9910676096"
		    }
		    </script>
			";i:5;N;i:6;N;}