a:6:{i:0;s:13964:"				<div class="h1"><h1>Andaman Package 5Days</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sugambazaartravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sugambazaartravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Andaman Package 5Days</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair, Havelock</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sugambazaartravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 5Days - 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="41193"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_9/257475/82343.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257475/82343.jpg"  width="150" height="150"    alt="Andaman Package 5Days" title="Andaman Package 5Days" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_9/257475/82342.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257475/82342.jpg"  width="150" height="150"    alt="Andaman Package 5Days" title="Andaman Package 5Days" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Air Fare / Train fare.<br />
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.<br />
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.<br />
Entrance Fees & Guide charges.<br />
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot). ?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.<br />
Travel Insurance.<br />
Anything which is not include in the inclusion.<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 TO PORT BLAIR
								</p>
								<p class="aj">Our representative will meet and assist you at the Veer Savarkar Airport. Board the waiting vehicles, drive to your hotel and check in. First half of the day is at leisure. Later in the afternoon visit Cellular jail followed by light and sound show. The Cellular Jail has a pride of place in Indiaâs freedom struggle. Many a stalwart were imprisoned here. Declared a national memorial, this three storey prison constructed by Britishers in 1906, is a pilgrimage destination for freedom fighters. This colossal edifice has mutely witnessed the most treacherous of inhumane atrocities borne by the convicts, who were mostly freedom fighters. The day draws to a gentle close with the Sound and Light Show at the historic Cellular Jail which gives you a vivid experience of its strong association with the freedom fighters and their struggle for independence. Overnight stay at the Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> PORT BLAIR â ROSS ISLAND â NORTH BAY ISLAND (Coral Island)
								</p>
								<p class="aj">Today after breakfast embark on a day long three island cruise. One of the most sought after activities. It covers a panorama of seven harbours that include the North Bay and Ross Island. It leaves a lasting impression. Visit Ross Island. Once the administrative headquarters of the British and capital of these Islands, the island is now under the Indian Navy. It stands now as a ruin of the bygone days with the old structures almost in debris. There is a small museum named Smritika, it holds photographs and the other antiques of the Britishers relevant to these islands. Thailand is famous for friendly flocks of Deer and lush green walking trails. North Bay, the water lovers may enjoy Snorkelling or take a glass bottom boat ride (Optional on direct payment) in its shallow waters with a chance to see corals up close also has mesmerizing picnic spots with natural picturesque environments Return to the hotel. Overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> PORT BLAIR â HAVELOCK ISLAND
								</p>
								<p class="aj">Today after breakfast you will transfer to Jetty. Head to Havelock Island on board Cruise connecting the two islands! Havelock, about 54 kilometres northeast of Portblair, the Island is a hidden jewel. Few Indians know of this stunning<br />
beach destination in their own backyard while heading for Phuket (in Thailand) across the waters of Andaman Sea. Havelock is a serene tropical island encompassing about 86 square kilometres. Its clear waters are rated among the bestin the world for Snorkelling and scuba diving. Close to 1000 different species of marine life inhabit the waters of the Andaman Islands. Scuba divers can see nudi branches, sea slugs and snails, varieties of ghost pipe fish, jaw fish and a number of different crustaceans of all shapes and sizes. With its serene beaches, 40 meters visibility underwater, colorfulcoral reefs and âfar from the maddening crowdâ appeal, Havelock Island has emerged as a dream destination among discerning travellers. Arrive at Havelock Jetty, you are met and assisted by our representative. Board the waiting vehicles and drive to the hotel. Check in at the hotel. After relaxation trip to Kalapathar Beach. Overnight stay at the Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> HAVELOCK ISLANDS â PORT BLAIR
								</p>
								<p class="aj">Today after breakfast, trip to Radhanagar Beach (or Beach No. 7) is the jewel in the crown of Havelock Island. Located on the western side of the island, it stands away from the cluster. The glorious white sand beach shot to global fame when Time magazine (in 2004) rated it as the finest in Asia. With lush tropical forest rising on a hill to one side, the draw of this white sand beach has steadily grown in the legion of avid beach buffs. The popularity of this beach has triggered cruises from across the Andaman Sea. Travellers cruise over a few days from Thailand to experience the magic of this beach in particular. A wide beach that runs over a few kilometres, Radhanagar is simply stunning. It lends itself to a variety of activities. Evening return to Port Blair. Overnight stay at Hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> DEPART PORT BLAIR â AIRPORT DROPPING
								</p>
								<p class="aj">Dropping to Airport with memories of an ultimate holidays at Andaman Islands.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Sightseeing</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air Fare / Train fare.</li><li>
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.</li><li>
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.</li><li>
Entrance Fees & Guide charges.</li><li>
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot). ?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.</li><li>
Travel Insurance.</li><li>
Anything which is not include in the inclusion.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p><strong>Cancellation Policy</strong>

<ul>
	<li>Cancellation before 30 days of start date will be charged processing fee equivalent to INR 3000 per person;Cancellations between 20 days to 30 days before start date, 35% of tour cost would be charged as retention;Cancellations between 20 days to 15 days before start date, 50% of tour cost would be charged as retention;</li>
	<li>Cancellations made within 15 days of start date, entire tour cost shall be charged as retention;</li>
	<li>Bank transaction charges apply on credit card/net banking refunds; ?Above policy may vary during peak season Note: We are not holding any rooms or airline seats as of now and above mentioned is quote only , subject to availability at the time of confirmation . First preference will be given to mentioned hotels for reservation. In case of non-availability of these hotels we shall advise the similar or next available option with supplement cost . Itinerary provided is just suggestive and the sightseeing will be done as per availability. In case of no show or late cancellation after reconfirmation charges applicable as per the Hotels Policy and other vendors policy. Itinerary provided is just suggestive and the sightseeing will be done as per availability.</li>
</ul>						
    	<p class="h dif xlarge b mb5px">Hotels Used / Similar:-</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Destination</td>
				<td class="headHr p5px b">No of Nights</td>
				<td class="headHr p5px b">Standard</td>
			</tr>
			<tr>
				<td class="data p5px">PortBlair</td>
				<td class="data p5px">3</td>
				<td class="data p5px">Hotel Haywizz</td>
			</tr>
			<tr>
				<td class="data p5px">Havelock-Island</td>
				<td class="data p5px">1</td>
				<td class="data p5px">Gold India Beach Resort</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sugambazaartravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 5Days - 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="41193"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Andaman Package 5Days - 4 Nights / 5 Days Tour Packages";i:2;s:129:"book andaman package 5days - 4 nights / 5 days tour packages, beach and islands tour packages, port blair, havelock tour packages";i:3;s:183:"Sugambazaar Travels & Tours Pvt. Ltd. offers Andaman Package 5Days - 4 Nights / 5 Days tour package, budget Beach and Islands tour packages for Port Blair, Havelock at exciting price.";i:4;s:1144:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "Air Fare / Train fare.
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.
Entrance Fees & Guide charges.
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot). ?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.
Travel Insurance.
Anything which is not include in the inclusion.",
		      "name": "Andaman Package 5Days",
		      "telephone": "+91-9795155660"
		    }
		    </script>
			";i:5;N;}