a:6:{i:0;s:21088:"				<div class="h1"><h1>Nabji Korphu Trek Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.exoticvacationsbhutan.biz/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.exoticvacationsbhutan.biz/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Nabji Korphu Trek Package</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">04</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						13 Nights / 14 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Thimphu, Paro, Punakha, Trongsa</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						USD 4625 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">15% discount will be offered to those who contact directly</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.exoticvacationsbhutan.biz/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Nabji Korphu Trek Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="126825"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					15% discount will be offered to those who contact directlyAir tickets, Guide and driver Tips and Personal expenses13-0431-12<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> ARRIVE PARO INTERNATIONAL AIRPORT
								</p>
								<p class="aj">Upon arrival at Paro International airport, you will be welcomed by our company representative and the tour guide will receive and escort you to designated Hotels. In the afternoon drive to the ruins of the 17th Century Drukgyel Dzong, an historic monument built by the Zhabdrung to commemorate his victory against invading Tibetans in 1644. In fine weather the towering peak of the sacred Mount Jomolhari (7314m) appears as a stunning backdrop. On the return, visit 7th Century Kyichu Lhakhang, one of the 108 temples constructed by the Tibetan king Songtsen Gampo. After that drive to Thimphu - world's smallest capital takes about an hour on a well paved two lane road that follows Paro River downstream to the confluence with Wang Chu (Thimphu River). The 60 kms road then turn upstream towards Thimphu along the Wang Chu. Check in at the designated hotel in Thimphu.</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> THIMPHU SIGHTSEEING
								</p>
								<p class="aj">We will start our sightseeing tour visiting Memorial Chorten built in memory of the 3rd King Jigme Dorji Wangchuck who reigned the Kingdom from 1952-1972. Visit the National Library where ancient manuscripts are preserved. Further, we will visit the Zorig Chusum - 13 Arts & Crafts Institute where traditional arts and crafts are still kept alive. The visitors can see students of different trades at work like: Sculpting, Thanka Painting, Wood Carving and other skills. Afternoon we will drive Paro. In the evening free for a leisure walk to explore Paro districts to experience the Bhutanese way of life.</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> THIMPHU - PUNAKHA
								</p>
								<p class="aj">After breakfast, drive over the Dochu-La Pass (3100 m), which on a clear day offers an incredible view of Himalayan peaks before descending into balmy Punakha valley. In the Dochu-La area there are vast Rhododendron forests that bloom in late April/early May covering the mountains in a riot of glorious spring colour. On arrival at Punakha, visit Punakha Dzong, built in 1637 by the Shabdrung, the 'Unifier of Bhutan' as predicted by the great Guru Rimpoche (Padmasambhava). After lunch, enjoy a walk to Chimi Lhakhang, temple of the Drukpa Kuenly who is also known as the Divine Madman. He inherited the Divine Madman title since he revolted against the orthodox Buddhism in his time. He taught the people that religion is an inner feeling and it's not necessary that one should be an ordained monk. He is also considered a symbol of fertility and most childless couples go to his temple for blessing. Overnight at your hotel in Punakha.</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> PUNAKHA - TRONGSA
								</p>
								<p class="aj">Drive from Punakha to Trongsa via Pele La Pass on the Black Mountain range. On the way visit beautiful Chendebji Chorten, erected in the 18th century. On arrival at Trongsa visit Trongsa Dzong, the largest Dzong in Bhutan. The view from the Dzong is spectacular and one can see across the landscape for many miles. Also visit the Ta Dzong museum housing an incredible collection of historical artifacts of the Royal Family. Overnight at your hotel in Trongsa.</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> TONGTONGPHEY - JANGBI VILLAGE
								</p>
								<p class="aj">After breakfast at your hotel, you will drive two hours from the Trongsa town along the Zhemgang highway brings you to the start of the Trek, Tongtongphey.<br />
<br />
You can also augment your itinerary with a visit to Kuenga Rabten palace, an important heritage in Bhutanese history. After arming yourself with information about the trek from the information booth, the village guide steers you down to the Mangdi river where you cross a suspension bridge. On this stretch of the journey the otherwise rare Golden Langurs, an endangered species of primate are abundant and almost impossible to miss. You will come in contact with the Monpas who are believed to be the first inhabitants of Bhutan.<br />
<br />
A glimpse into their lifestyle coupled with mythical legends about their origins further validates this claim. The campsite in Jangbi stands on the valley sill, which offers a resplendent view of the Mangdi valley. If you still have some energy you can watch a local cultural program or even better, take part in it.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> JANGBI VILLAGE - KUDRA VILLAGE
								</p>
								<p class="aj">The morning allows you to further interact with the Monpas. Before you proceed, you can also pay a visit to the orchid garden that houses around 75 different varieties of orchids. The trail to Kudra is especially interesting as it passes stone imprints of Guru Rinpoche's footprints, dagger and phallus. Lunch is served just before you arrive at Phrumzur, one of the Monpa villages. After a quick visit to the village Lhakhang in Phrumzur and you then proceed to the campsite in Kudra. En route, you'll encounter another small Monpa village called Lekpogang, after which, the campsite in Kudra is just an hour's walk. The campsite offers a bird's-eye-view of Nyimshong village and also of Zhemgang town.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> KUDRA VILLAGE - NABJI VILLAGE
								</p>
								<p class="aj">This part of the trek is a collage of streams, waterfalls and thick forests that will give you an invigorating feeling of being out in the wild. Animals such as Himalayan Squirrels, Rhesus Mecaques, and small snakes are often spotted along the trail. Himalayan black bears, Red pandas, tigers and Clouded leopards are also present this region. Upon arrival at the holy tree in Nabji, the villagers will give you a warm reception. Nabji is a beautiful village with paddy fields circling the clustered houses. You can also hike to the community school and enjoy a game of football or volleyball with the local school children.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> NABJI VILLAGE - KORPHU VILLAGE
								</p>
								<p class="aj">En route to Korphu, Nabji temple is located amidst verdant paddy fields. Inside, there is a stone pillar on which Guru Rinpoche imprinted the thumbs of two warring kings as a symbol of resolution after bringing about peace. Korphu is situated on a mountaintop at an altitude of 1,500m. The most striking thing about Korphu is that the people exemplify hospitality almost treating you like royalty.<br />
<br />
You have the option of being welcomed with a traditional 'Chipdrel' procession and a 'Marchang' ceremony. These ceremonies are typically reserved for royalty but here the villagers will greet you by singing these traditional songs of praise and wellbeing. They also perform the traditional 'Tashi Labey' dance to bid you farewell. The villagers can explain and demonstrate and even allow you to participate in the quintessential Bhutanese games of 'Khuru', 'Dego', 'Sok-sum', and 'Gee-dum'.<br />
<br />
You can also visit the village temple that houses sacred relics of Pema Lingpa, the most famous Terton or 'Treasure revealer' in Bhutan. Lunch can be provided in the village campsite which also provides a spectacular bird's-eye view of Nabji and other surrounding areas.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> KORPHU VILLAGE - NIMSHONG VILLAGE
								</p>
								<p class="aj">The hike from Korphu to Nyimshong is pleasant and arguably the best location for bird watching as it is home to over 395 avian species. The elusive Rufous Necked Hornbill has its nesting holes adjacent to the trail. The walk is interspaced with waterfalls and, streams and cantilever bridges. The evening brings you to Nyimshong village. The campsite is equipped with an amphitheatre. The women of Nyimshong have a penchant for singing and dancing and often put on cultural shows for visitors.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> NIMSHONG VILLAGE
								</p>
								<p class="aj">You begin by descending towards the Mangdi River. You are likely to see Herons, River-lapwings and even Golden Langurs in this region. A steep hour-long climb will bring you to the road from where your driver will drive you back to Trongsa.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> TRONGSA - PUNAKHA
									</p>
									<p class="aj">This morning we take a short time to stroll around the town and later start for a drive to Punakha. This is a scenic drive, passing many small villages, waterfalls with spectacular landscape, crossing Black mountains, the ever-changing vegetation and finally arriving in the warm valley of Punakha. As the valley is at a lower elevation of about 1250m (4100 ft.) above sea level, it enjoys subtropical climate with warm summers and pleasant winters. After a short rest at the hotel, you will walk to explore Punakha districts to experience the Bhutanese way of life.</p>
									</td>	
									</tr>
									</table>				
									</div>
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 12:</b> PUNAKHA - PARO
									</p>
									<p class="aj">Today you will drive back to Paro via Dochula Pass. En route, you will visit the Simtokha Dzong. After hotel check-in free for a leisure walk to explore Paro districts to experience the Bhutanese way of life.</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 13:</b> HIKE TO PARO TAKTSHANG
									</p>
									<p class="aj">Hike to Tiger's Nest, one of the most sacred Taktshang monasteries in Bhutan. It is perched on the cliff where Guru Rinpoche is said to have flown to the site riding on a tigress. He subsequently meditated here for three months. You can have lunch at the Taktshang cafeteria from where you get a spectacular view of the monastery.<br />
<br />
In the afternoon drive to the ruins of the 17th Century Drukgyel Dzong, an historic monument built by the Zhabdrung to commemorate his victory against invading Tibetans in 1644. In fine weather the towering peak of the sacred Mount Jomolhari (7314m) appears as a stunning backdrop. On the return drive to Paro, visit 7th Century Kyichu Lhakhang, one of the 108 temples constructed by the Tibetan king Songtsen Gampo. Overnight at Paro.</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 14:</b> DEPART PARO
									</p>
									<p class="aj">The guests will be Seen Off by a Representative of our company and the Tour Guide at the Exit Gate. Wish Bon Voyage!!!</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>2 Star Hotel</li>
																		<li>3 Star Hotel</li>
																		<li>4 Star Hotel</li>
																		<li>5 Star Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
																		<li>Airport Pickup-Drop</li>
																		<li>Private Cab</li>
																		<li>Private Guides</li>
																		<li>Entry Tickets</li>
																		<li>Sim Card</li>
																		<li>Complimentary Drinks</li>
																		<li>Bus Transfer</li>
																		<li>Cab Transfer</li>
																		<li>Stay Included</li>
																		<li>Non Veg Meals</li>
																		<li>Veg Meals</li>
																		<li>Veg & Non Veg Meals</li>
																		<li>Pickup-Drop</li>
																<li>Service included above</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air tickets, Guide and driver Tips and Personal expenses</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>All Season waits<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p><strong>Cancellation Policy</strong>

<p><u><strong>Tour programs booked and subsequently cancelled shall be subject to cancellation charges as follows:</strong></u>

<table border="0" cellpadding="0" cellspacing="0" style="width:805px;" width="805">
	<tbody>
		<tr>
			<td>
			<p>1
			</td>
			<td>
			<p>Within 45 days of the start of the tour program
			</td>
			<td>
			<p>15% of the total tour cost
			</td>
		</tr>
		<tr>
			<td>
			<p>2
			</td>
			<td>
			<p>Within 30 days
			</td>
			<td>
			<p>25% of the total tour cost
			</td>
		</tr>
		<tr>
			<td>
			<p>3
			</td>
			<td>
			<p>Within 21 days
			</td>
			<td>
			<p>30% of the total tour cost
			</td>
		</tr>
		<tr>
			<td>
			<p>4
			</td>
			<td>
			<p>Within 15 days
			</td>
			<td>
			<p>50% of the total tour cost
			</td>
		</tr>
		<tr>
			<td>
			<p>5
			</td>
			<td>
			<p>Less than 7 days
			</td>
			<td>
			<p>100% of the total tour cost
			</td>
		</tr>
	</tbody>
</table>

<p>*&nbsp;DELAYED ARRIVAL/DEPARTURE

<ul>
	<li>There shall be no fixed charge for the number of days of delay in arrival of visitors due to weather conditions, Druk-air problems or road blocks except for minimum charge on hotel cancellation, transport and guide.</li>
	<li>There shall be no charge for the number of days of delay in departure of visitors due to weather conditions, Druk-Air problems or roadblocks. They will be charged only the actual expenses on accommodation, food, transport, guide and any other services required.</li>
</ul>

<p><strong>DRUK AIR CANCELLATION POLICY:</strong>

<p><strong><u>Tickets issued and cancelled shall be subject to cancellation charges as follows:</u></strong>

<ul>
	<li>Within 45 days of the start of travel: no charges except documentation fees</li>
	<li>Within 30 days of the start of travel: 50% of the fare</li>
	<li>Within 15 days of the start of travel: 100% (No refund)</li>
	<li>Name Change: USD 25 per ticket</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.exoticvacationsbhutan.biz/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Nabji Korphu Trek Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="126825"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Nabji Korphu Trek Package - 13 Nights / 14 Days Tour Packages";i:2;s:141:"book nabji korphu trek package - 13 nights / 14 days tour packages, hill station tour packages, thimphu, paro, punakha, trongsa tour packages";i:3;s:181:"Exotic Vacations Bhutan offers Nabji Korphu Trek Package - 13 Nights / 14 Days tour package, budget Hill Station tour packages for Thimphu, Paro, Punakha, Trongsa at exciting price.";i:4;s:551:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Thimphu, Paro, Punakha, Trongsa"        
		                 },
		      "description": "15% discount will be offered to those who contact directlyAir tickets, Guide and driver Tips and Personal expenses13-0431-12",
		      "name": "Nabji Korphu Trek Package",
		      "telephone": "+975-77685791"
		    }
		    </script>
			";i:5;N;}